Ionic 如何完成对REST API的http调用?

brccelvz  于 5个月前  发布在  Ionic
关注(0)|答案(1)|浏览(56)

我使用离子与节点服务器,我已经实现了REST API,但我有一个问题:当我在我的前端执行几次更新查询,服务器只执行6个请求,然后停止工作。
在Ionic应用程序(前端)我有这个:

update_loc() {
    // Attempt to login in through our User service
    this.busloc.update_loc(this.track_info).subscribe((resp) => {
      console.log("Call provider in busloc.ts")
    }, (err) => {
      console.log("Updating location failed")
    });
  }

字符串
在我的提供程序(bus-loc.ts)中,我有:

update_loc(track_info: any) {
    let seq = this.api.post('update_loc', track_info).share();

    seq.subscribe((res: any) => {
      // If the API returned a successful response, locations has been updated
      if (res.status == 'success') {
         console.log("Location updated succesfully")
      } 
    }, err => {
      console.error('ERROR', err);
    });

    return seq;
  }


在后端我有以下功能:

//Actualizar ubicacion
function updateLoc(req,res){
    body = req.body;    
    TrackInfo.findOne({ where: { id: body.id } })
    .then(tr_info=>{
        if (!tr_info){
            return res.status(404).send ('No track_info found');
        }

        tr_info.update({
            is_active: body.is_active,
            lat: body.lat,
            lon: body.lon
        })
        console.log("Updated track info succesfully")
        return res.status(200); 
     

    }).catch(err => {
        return res.status(500).send ('Server Error in updateLoc');
    });

}


现在我想知道如何才能完成API调用,因为我读到浏览器(在我的情况下是Chrome)只能执行六个http请求,并且由于我连续调用update_loc()多次,服务器会被阻塞。欢迎任何建议。

vqlkdk9b

vqlkdk9b1#

您可以通过调用unsubscribe取消最后一次呼叫

subscription: Subscription;
  update_loc() {
    // cancel last call
    this.subscription.unsubscribe();
    // Attempt to login in through our User service
    this.subscription = this.busloc.update_loc(this.track_info).subscribe((resp) => {
      console.log("Call provider in busloc.ts")
    }, (err) => {
      console.log("Updating location failed")
    });
  }

字符串
您可以在这里找到更多信息:https://www.syntaxsuccess.com/viewarticle/angular-2.0-and-http

相关问题