promise.all()
을 사용하는 루프 후에 동 기적으로 함수 목록을 실행하려고하지만 내 코드가 예상대로 작동하지 않습니다.노드 promises.all()이 예상대로 작동하지 않습니다.
누군가 내가 뭘 잘못했는지 알아?
var Promise = require('promise');
var promises = [];
for (var i = 0; i < 3; i++) {
console.log('push promise ' + i);
promises.push(foo(i));
}
Promise.all(promises)
.then(function (data) {
console.log("done");
});
function foo(i) {
return new Promise(function (resolve, reject) {
console.log('---> foo i ' + i);
resolve('done foo ' + i);
});
}
하지만 출력은 내가
push promise 0
push promise 1
push promise 2
---> foo i 0
---> foo i 1
---> foo i 2
done
가 사전에 감사합니다 기대
push promise 0
---> foo i 0
push promise 1
---> foo i 1
push promise 2
---> foo i 2
done
입니다 :
내 코드입니다.
모든 약속이 만들어 질 때 해결을 시작합니다. 'Promise.all '을 호출하면 모든 인수가 해결 될 때 해결되는 또 다른 약속이 만들어집니다. 생성자 함수에는 비동기 동작이 없습니다. [setTimeout (..., 0)] (https://stackoverflow.com/questions/1360238/myfunction-vs-window-settimeoutmyfunction-0)을 사용하여 원하는 실행 순서를 얻을 수 있습니다. – allonhadaya