javascript - 在 JavaScript/node.js 中使用 A+ promise 循环

标签 javascript node.js promise es6-promise

我需要不断调用远程 API 直到获得所需的响应,并且我想在 node.js 中使用官方 A+ promises。同步伪代码:

params = { remote api call params }
while (true) {
    result = callRemoteApi(params)
    if isGood(result) {
        onSuccess(result)
        break
    }
    params = modify(params)
}

我正在使用 request-promise请求的 lib,所以结果可能是这样的:

new Promise(function (resolve, reject) {
    var task = request({params})
        .then(function (result) {
            if (isGood(result)) {
                resolve(result);
            } else {
                task = request({new params}).then(this_function);
            }
        });

附言这与 https://stackoverflow.com/a/17238793/177275 非常相似, 但我想要一个非基于 q 的实现。

最佳答案

像这样的东西应该运作良好:

var remoteApiCall = function(num){
    // fake function to resolve promise if random number in range
    return new Promise(function(resolve, reject){
        return ((Math.random()*10) < num)
            ? resolve(true)
            : reject(false);
    })
}

function getUntil(num){
    return remoteApiCall(num).then(function(result){
        if (result) {
            return result  
        } else {
            // call again until you get valid response
            return getUntil(num)
        }
    })
}

getUntil(num).then(...)

关于javascript - 在 JavaScript/node.js 中使用 A+ promise 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28577114/

相关文章:

javascript - 在 javascript 中分配之前的变量阴影和测试是否存在

javascript - Angular,在页面的哪个位置放置路由器导出

node.js - 如何在nodejs中执行 "ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 output.mp4"命令

node.js - 所有 nodejs 事件 API 的任何文档?

javascript - Promises => Async/Await...这有什么好处吗?

javascript - 向 Promise 添加监听器后,我应该使用原始 Promise 还是新 Promise?

javascript - 我使用 Promise 和 async 哪里出错了?

javascript - 使用 javascript 作为快速 View 引擎

javascript - Excel Javascript API - 添加带有类别轴值的图表

javascript - 在expressJs中堆栈jquery