Vì vậy, tôi đang cố gắng để chuyển mã của tôi vào "Promise thế giới", và ở nhiều nơi khi tôi đã phải "vòng lặp" với chức năng async - tôi chỉ đơn giản sử dụng đệ quy theo cách như vậyAsync đệ quy sử dụng lời hứa
function doRecursion(idx,callback){
if(idx < someArray.length){
doAsync(function(){
doRecursion(++idx,callback)
});
}else{
callback('done!')
}
}
doRecursion(0,function(msg){
//...
});
Bây giờ tôi đang cố gắng để thực hiện thay đổi vào thế giới Promise, và tôi khá mắc kẹt
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){
//...
});
Cảm ơn.
'quyết tâm (doRecursion (++ idx)); '- nếu bạn giải quyết Promise 1 với Promise 2, sau đó hứa sẽ giải quyết 1 với giá trị giải quyết của Promise 2 –
hãy ngừng sử dụng [lời hứa constructor chống mẫu] (http://stackoverflow.com/q/23803743/918910). Điều này cũng cho câu trả lời. – jib