javascript - 如何在for循环中循环 promise 并在满足条件时中断

标签 javascript typescript promise protractor

我是使用 Promise 的新手,并且为了解决这个问题而绞尽脑汁。我想运行一个脚本,直到在 Protractor 中使用以下代码满足条件,但它不起作用。如何解决这个问题?

let counter = 30;
for (let i = 0; i < counter; i++) {

  browser.executeScript(somescript).then((value) => {
    //console.log(value);
    if (value > 0) 
      //do some stuff
    }
    else {
      return; //exit for loop --not working
       //or
      i=counter;// to exit if i and counter value same
    }
  })

}

最佳答案

我有这个 limitedRetry 代码,这似乎是您需要的代码

limitedRetry = (cont, fn) => fn().catch(err => cont > 0 ? limitedRetry(cont - 1, fn) : Promise.reject(err));

你的用途是

limitedRetry(30, function() {
    browser.executeScript(somescript).then((value) => {
        if (value > 0) {
            // do some stuff
            return 'this will be the resolved value of the promise';
        } else {
            return Promise.reject('try again');
        }
    });
})
.then(v => console.log(v))
.catch(err => console.log(err));

关于javascript - 如何在for循环中循环 promise 并在满足条件时中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45366533/

相关文章:

javascript - 是否可以在 react 中卸载动态 css 导入?

node.js - Nodejs 加密模块不适用于 typescript

javascript - 递归调用 promise 方法是无限的

javascript - node.js promise 在 if 语句中没有解析

javascript - 调用 Javascript 函数的困惑

javascript - 正则表达式是否允许模式中未指定的字符?

javascript - Box Node SDK 未使用 readStream 拉取文件

typescript - RxJS:在特定事件后发出缓冲区

android - Ionic2 - 无法在给定路径的 UI 上显示本地镜像

javascript - 递归函数不返回 promise