typeScript 打破 return Promise<any> 的方法调用循环

typeScript Break a loop of method call that return Promise<any>

我有一个循环调用一个方法,该方法 returns 一个 Promise<any> 类型的对象 如果从该方法返回给我的结果是正确的,我想打破循环。我有 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'

循环仍在继续

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

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;
      }
    }
  }
    
}