angular - Promise trong vòng lặp foreach (Typescript 2)
Tôi đã gắn bó với các chuỗi promise, tôi cần thực hiện một số mã sau khi tải hình ảnh lên máy chủ. Đây là Angular2 và Typescript. Hãy viết một số giả mã:
uploadImages(images):Promise<any> {
return new Promise((resolve, reject) => {
for (let image of images) {
upload(image.type_1).on('upload_completed', (data) => {
// do something
})
upload(image.type_2).on('upload_completed', (data) => {
// do something
})
}
}
uploadImages(images).then(doSomethingElse);
Tôi đã thực hiện nhiệm vụ này theo một cách nào đó giống như thế này, nhưng tôi hơi bối rối với chuỗi promise, tôi không thể figure out cách nối các lần tải hình ảnh này trong vòng lặp foreach và trả về kết quả trong promise mới khi tất cả các lần tải lên xong. Cách đúng để làm điều này là gì?
CHỈNH SỬA: Có các callback dựa trên sự kiện trong vòng lặp, làm thế nào để chuyển chúng thành promise để sử dụng Promise.all()?
Câu trả lời #1
uploadImages(images):Promise<any> {
let promises_array:Array<any> = [];
for (let image of images) {
promises_array.push(new Promise(function(resolve,reject) {
upload(image.type_1).on('upload_completed', (data) => {
resolve(true);
})
}));
promises_array.push(new Promise(function(resolve,reject) {
upload(image.type_2).on('upload_completed', (data) => {
resolve(true);
})
}));
return Promise.all(promises_array);
}
uploadImages(images).then(doSomethingElse);
