function whilst(condition, todo, fin){ var cb = function(){ if(condition()){ todo(cb); }else{ fin(); } } cb(); }
这里之所以要用递归,而不用简单的循环就是为了 让 cb 起到一个作用:
指示本次任务完成,进行下一次任务,如果用简单的循环,那么指示每次任务完成的标志就是 循环一次,这样就无法检测异步操作是否真正完成了。
所以把cb用在异步的代码里,可以做到指示本次异步操作完成,赶紧进行下一个任务吧。这个意思。