Javascript 迭代函数并根据回调值停止

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); }); }

如何迭代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函数也需要回调,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);
});

什么是调用函数?在定义的地方??我无法理解您的要求!你能说得更清楚些吗。?