Javascript 解析Promise While循环中的值

Javascript 解析Promise While循环中的值,javascript,node.js,promise,bluebird,Javascript,Node.js,Promise,Bluebird,我发现: 及 但是,当我尝试使用这些来循环一个承诺时,该承诺的resolve值不会在链中传递 例如,打印以下代码: 做了1次 做了两次 未定义您需要指定返回值 var promiseWhile = Promise.method(function(condition, action, result) { if (!condition()) return result; return action().then(promiseWhile.bind(null, condition, a

我发现: 及

但是,当我尝试使用这些来循环一个承诺时,该承诺的resolve值不会在链中传递

例如,打印以下代码:

做了1次
做了两次

未定义您需要指定返回值

var promiseWhile = Promise.method(function(condition, action, result) {
    if (!condition()) return result;
    return action().then(promiseWhile.bind(null, condition, action, result));
});

var do_it_twice = function(o) {
    return promiseWhile(
        function() { return times < 2; },
        function() { return do_it(o);  },
        o
    );
}
var promisewile=Promise.method(函数(条件、动作、结果){
如果(!condition())返回结果;
return action().then(promisewile.bind(null、condition、action、result));
});
var do_it_两次=函数(o){
归还承诺书(
函数(){返回时间<2;},
函数(){return do_it(o);},
o
);
}

您需要指定返回值

var promiseWhile = Promise.method(function(condition, action, result) {
    if (!condition()) return result;
    return action().then(promiseWhile.bind(null, condition, action, result));
});

var do_it_twice = function(o) {
    return promiseWhile(
        function() { return times < 2; },
        function() { return do_it(o);  },
        o
    );
}
var promisewile=Promise.method(函数(条件、动作、结果){
如果(!condition())返回结果;
return action().then(promisewile.bind(null、condition、action、result));
});
var do_it_两次=函数(o){
归还承诺书(
函数(){返回时间<2;},
函数(){return do_it(o);},
o
);
}

我最近遇到了一个类似于此问题的问题,并遇到了此问题。我最终使用了一个异步递归函数来循环请求,直到满足一个条件。在我的例子中,我必须检查响应的数组属性的长度(它是刮取的数据,页面上的脚本有时在发送响应之前不会加载数据)。这是我的解决方案,如果响应不包含文章,它会发送另一个请求(它是香草ES6,允许您使用任何条件(我使用了out.data.length==0)):


我最近遇到了一个类似于这个问题的问题,并且遇到了这个问题。我最终使用了一个异步递归函数来循环请求,直到满足一个条件。在我的例子中,我必须检查响应的数组属性的长度(它是刮取的数据,页面上的脚本有时在发送响应之前不会加载数据)。这是我的解决方案,如果响应不包含文章,它会发送另一个请求(它是香草ES6,允许您使用任何条件(我使用了out.data.length==0)):


如果(!condition())返回-如果(!condition())返回“oops”,则将其更改为
。。。现在怎么办?谢谢。就这样,真的吗?这并不能解决问题,这表明你做错了什么!对这就是我的意思。
如果(!condition())返回-如果(!condition())返回“oops”,则将其更改为
。。。现在怎么办?谢谢。就这样,真的吗?这并不能解决问题,这表明你做错了什么!对这就是我的意思。
export async function scrape () {
    let out =  await axios.get('/api/scrape');
    if(out.data.articles.length===0){
        return await scrape();
    }
    else return out;
}