如何在for循环内等待响应? [英] How to wait for response inside for loop?

查看:1415
本文介绍了如何在for循环内等待响应?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

描述:我在for循环中调用了HTTP请求.我想从服务文件中获取响应,然后增加循环.如何等待从服务文件中获取响应,然后执行循环. >

Description : I called an HTTP request inside for loop.I want to get the response from service file then increase loop.How can i wait to get response from service file then execute loop.

for(let i=0;i<final_arr.length;i++)
{
  this.user.list_upload(JSON.stringify(ins_arr)).subscribe(data=>{
      if(data.hasOwnProperty('STATUS'))
      {        if(data.STATUS.toLowerCase()=='success')
        {  
          this.update();
        }
        else if(data.STATUS.toLowerCase() == 'error')
        {
         this.user.showToast(data.MESSAGE);  
        }
      }
    },err=>{
      this.user.showToast("Error occurred in service file");
    });
}

请告知

推荐答案

您应使用异步功能.首先将HTTP请求转换为一个Promise,然后在for循环内异步调用该Promise:

You should use an async function. First convert the HTTP request to a promise, then call that promise asynchronously inside the for loop:

 asyncReq (){
    return  new Promise((resolve, reject) => {
          this.user.list_upload(JSON.stringify(ins_arr)).subscribe(data=>{
            if(data.hasOwnProperty('STATUS')){        
              if(data.STATUS.toLowerCase()=='success')
              {  
                this.update();
                resolve();
              }
              else if(data.STATUS.toLowerCase() == 'error')
              {
                this.user.showToast(data.MESSAGE);  
                reject();
              }
            }
          },err=>{
            this.user.showToast("Error occurred in service file");
            reject(err);
          });
      })
  }


  //Async function where loop progresses only after asyncReq completes
  async asyncForFunction () {
    for(let i=0; i < final_arr.length; i++){
      await this.asyncReq ();
    }
  }

这篇关于如何在for循环内等待响应?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆