async.whilst 的一个简化版实现

时间:2023-03-08 22:28:54
async.whilst 的一个简化版实现
function whilst(condition, todo, fin){
var cb = function(){
if(condition()){
todo(cb);
}else{
fin();
}
}
cb();
}

这里之所以要用递归,而不用简单的循环就是为了 让 cb 起到一个作用:

指示本次任务完成,进行下一次任务,如果用简单的循环,那么指示每次任务完成的标志就是 循环一次,这样就无法检测异步操作是否真正完成了。

所以把cb用在异步的代码里,可以做到指示本次异步操作完成,赶紧进行下一个任务吧。这个意思。