如何根据回调返回迭代nodejs中的异步函数?
示例:
假设我有以下功能
var fn1 = function(i, callback){
// code here
callfunction(i, function(err, p2){
if(err) throw err;
if(something) return callback(true);
else return callback(false);
});
}
我需要迭代并调用i = 1,2,3,...直到我的回调返回false。
我尝试使用async,但我不认为它可以帮助我,因为测试功能也需要回调,而test和iteratee的功能是相同的,我不能再调用两次。
答案 0 :(得分:0)
如果我正确理解你的问题。一些递归怎么样
const maxTries = 10;
// just a stupid counter to run a be able to change return value
let numberOfCalls = 0;
const asyncCall = () => {
if (numberOfCalls === 9) {
return Promise.resolve(false);
}
numberOfCalls += 1;
return Promise.resolve();
};
function iterate(calls = 0) {
if (maxTries === calls) {
return Promise.resolve();
}
return asyncCall().then(value => {
if (value === false) {
return value;
}
return iterate(calls + 1);
});
}
iterate().then(result => {
if (result === undefined) {
//to many tries
}
console.log('result', result);
});