【发布时间】:2016-02-22 20:48:52
【问题描述】:
所以我试图将我的代码转移到“Promise 世界”中,并且在许多地方我不得不使用异步功能“循环” - 我只是以这种方式使用递归
function doRecursion(idx,callback){
if(idx < someArray.length){
doAsync(function(){
doRecursion(++idx,callback)
});
}else{
callback('done!')
}
}
doRecursion(0,function(msg){
//...
});
现在我正在尝试对 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){
//...
});
谢谢。
【问题讨论】:
-
resolve(doRecursion(++idx));- 如果你用 Promise 2 解析 Promise 1,那么 Promise 1 将用 Promise 2 的解析值解析 -
请停止使用promise constructor anti-pattern。这也适用于答案。
标签: javascript node.js recursion promise