【问题标题】:typeScript Break a loop of method call that return Promise<any>typeScript 中断返回 Promise<any> 的方法调用循环
【发布时间】:2021-06-13 11:09:56
【问题描述】:

我有一个循环,它调用一个返回Promise&lt;any&gt; 类型对象的方法,如果从该方法返回给我的结果是正确的,我想打破循环。我有 break 但循环继续:

for (let item of List) {
  let currentItem = item .split(',');
  
  if (flag != '0')
  {
    break;
    
  }
  this.service.getList(currentItem [0]).then(res => {
    if (res != null) {
      for (let i of res) {
        if (i.serviceName == name) {
          flag = selectIp;
                
          break;
        }
      }
    }
  }).catch(res => {

  });

}

服务中的代码:

  getList(ip: string): Promise<any> {
  const apiUrl = environment.url + '/getData';
return this.httpClient.post<any>(apiUrl, body)
  .toPromise();

}

break 不工作。即使flag != '0' 和i.serviceName == name' 时,循环也会继续

【问题讨论】:

  • 这个代码块有什么作用? if (flag != '0') { break; }要不要在这里加一个return而不是break; ?

标签: typescript promise httpclient


【解决方案1】:

您可以使用此代码。使您的函数异步,我们在下面使用等待。

for (let item of List) {

  let currentItem = item.split(',');
      
  if (flag != '0')
  {
    break;
  }

  const res = await this.service.getList(currentItem [0]);

  if (res != null) {
    for (let i of res) {
      if (i.serviceName == name) {
        flag = selectIp;         
        break;
      }
    }
  }
    
}

【讨论】:

    猜你喜欢
    • 2020-11-28
    • 2019-08-16
    • 2016-09-27
    • 2020-10-12
    • 2017-10-31
    • 2017-07-30
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多