Javascript 迭代函数并根据回调值停止
如何迭代nodejs中的异步函数,并根据回调返回停止 例如: 假设我有以下函数Javascript 迭代函数并根据回调值停止,javascript,node.js,asynchronous,asynccallback,Javascript,Node.js,Asynchronous,Asynccallback,如何迭代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); }); }
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函数也需要回调,test和iteratee的函数是相同的,我不能调用两次。如果我正确理解您的问题。递归呢
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);
});
什么是调用函数?在定义的地方??我无法理解您的要求!你能说得更清楚些吗。?