yos*_*reb 5 javascript recursion node.js promise
所以我试图将我的代码转移到"Promise world",并且在很多地方,当我不得不"循环"异步功能时 - 我只是以这种方式使用递归
function doRecursion(idx,callback){
if(idx < someArray.length){
doAsync(function(){
doRecursion(++idx,callback)
});
}else{
callback('done!')
}
}
doRecursion(0,function(msg){
//...
});
Run Code Online (Sandbox Code Playgroud)
现在我正试图改变进入Promise世界,我很困惑
var Promise = require('bluebird')
function doRecursion(idx){
return new Promise(function(resolve){
if(idx < someArray.length){
doAsync(function(){
//... doRecursion(++idx)
// how do i call doRecusion here....
});
}else{
resolve('done!')
}
});
}
doRecursion(0).then(function(msg){
//...
});
Run Code Online (Sandbox Code Playgroud)
谢谢.
我会采用这种Promise.all方法。
其作用是等待数组中的所有承诺都已解决。该映射会将异步方法应用于数组中的每个项目并返回一个承诺。
function doAsyncP() {
return new Promise((resolve) => {
doAsync(function() {
resolve();
});
});
}
Promise.all(
someArray.map(doAsyncP)
).then((msg) => {
//we're done.
});
Run Code Online (Sandbox Code Playgroud)