Tôi đang sử dụng SQLStorage từ nền tảng Ionic. Hàm remove sẽ trả về một lời hứa. Trong mã của tôi, tôi cần phải loại bỏ nhiều giá trị. Khi tất cả đã xong, tôi cần thực thi một số mã.Angular2 chờ cho nhiều lời hứa kết thúc
Làm cách nào tôi có thể chờ tất cả những điều này và sau đó thực thi chức năng gọi lại?
Code:
removeAll() {
this.storage.remove(key1);
this.storage.remove(key2);
this.storage.remove(key3);
}
lồng nhau tất cả là một thực tế xấu vì vậy tôi đang tìm kiếm một giải pháp phong nha :)
removeAll() {
return this.storage.remove(key1).then(() => {
this.storage.remove(key2).then(() => {
this.storage.remove(key3);
});
});
};
Tôi sẽ thêm rằng nếu bất kỳ lời hứa nào từ chối, 'Promise.all' sẽ ngay lập tức từ chối (cho dù phần còn lại đã kết thúc) và' then' sẽ bị bỏ qua. Nếu bạn cần chạy 'doSomething()' cho dù chúng thành công hay thất bại, bạn cần 'catch' mỗi cá thể riêng lẻ để trả về' Promise.resolve() '. –
Với 'Promise.all()', họ sẽ bị truy tố từng cái một, hay tất cả cùng một lúc? – Robouste
Tất cả các cuộc gọi được thực hiện ngay lập tức, sau đó 'Promise.all()' chỉ đợi tất cả các lời hứa này hoàn thành trước khi nó hoàn thành chính nó.Đây không phải là tính năng 'Promise.all'. Với mã này 'Promise.all ([ this.storage.remove (key1),', ...]); '' this.storage.remove (key1) 'được gọi và chỉ trả về giá trị (' Promise') được thêm vào mảng được chuyển đến 'Promise.all (...)' –