我想按如下方式制作一个循环
asyncFunction(function(returnedVariable){
if(returnedVariable < 10 )
// call asyncFunction() again
else
// break/exit
});
这可能吗?
我无法从内部调用它,因为那时
asyncFunction(function(returnedVariable){
if(returnedVariable < 10 )
asyncFunction(function(returnedVariable){
// ???
});
else
// break/exit
});
答案 0 :(得分:1)
编辑 - 底部的原始答案。重读之后,我认为你可以为你的情况做这件事(虽然我从来没有尝试过这样的内部功能):
function asyncFunction(callback){ /* ... do stuff then callback() */ };
function myCallback(returnedVariable){
if(returnedVariable < 10 ){
asyncFunction(myCallback);
} else {
// break/exit
}
}
asyncFunction(myCallback);
我确定在没有库的情况下可以做到这一点但是为了简单起见,我总是只使用caolan/async在节点和浏览器中都有效:
var async = require('async');
// for browser, above this script:
// <script src="/path/whatever/async.js" type="text/javascript"></script>
function wrapper(callback){
var lastReturn = 0;
function test(){
return lastReturn < 10
};
function iterate(next){
lastReturn = doSomethingWithPrev(lastReturn);
next();
};
function complete(err){
if(err){ return callback(err) };
callback(null, lastReturn);
};
async.whilst(test, iterate, complete);
};