귀하의 문제는 약속과 관련이 없으며 귀하의 사용법은 async
입니다.
async.each(items, handler, finalCallback)
은 items
배열의 모든 항목에 handler
을 적용합니다. handler
함수는 비동기식입니다. 즉, 작업이 끝나면 호출해야하는 콜백이 전달됩니다. 모든 핸들러가 완료되면 최종 콜백이 호출됩니다. 특히, 약속 혼자 아주 능숙하게이 작업을 채우기 : 그러나
var handler = function (item, cb) {
saveItem(item)
.then(
function() { // all is well!
cb();
},
function (err) { // something bad happened!
cb(err);
}
);
}
var finalCallback = function (err, results) {
// ...
}
async.each(items, handler, finalCallback);
, 당신은 코드의 특정 부분에 대한 async
를 사용할 필요가 없습니다 : 여기
는 현재의 문제를 직접 해결하려면 방법 Q.all()
:
// Create an array of promises
var promises = items.map(saveItem);
// Wait for all promises to be resolved
Q.all(promises)
.then(
function() { // all is well!
cb();
},
function (err) { // something bad happened!
cb(err);
}
)
'.all'을 사용하여 완벽하게 작동합니다. 감사합니다! – dzm
위대한 당신은'Q.all' 해결책을 언급했다 – Krym
핫 코드. 확실히 재미와 이익을 위해 이것을 사용할 것입니다. :) – Antoine