Cập nhật tháng 5 năm 2019 bằng RxJs v6
Tìm thấy các câu trả lời khác hữu ích và muốn cung cấp một ví dụ cho câu trả lời do Arnaud đưa ra về zip
cách sử dụng.
Đây là một đoạn mã cho thấy sự tương đương giữa Promise.all
và rxjs zip
(cũng lưu ý, trong rxjs6, cách zip bây giờ được nhập bằng cách sử dụng "rxjs" chứ không phải dưới dạng toán tử).
import { zip } from "rxjs";
const the_weather = new Promise(resolve => {
setTimeout(() => {
resolve({ temp: 29, conditions: "Sunny with Clouds" });
}, 2000);
});
const the_tweets = new Promise(resolve => {
setTimeout(() => {
resolve(["I like cake", "BBQ is good too!"]);
}, 500);
});
let source$ = zip(the_weather, the_tweets);
source$.subscribe(([weatherInfo, tweetInfo]) =>
console.log(weatherInfo, tweetInfo)
);
Promise.all([the_weather, the_tweets]).then(responses => {
const [weatherInfo, tweetInfo] = responses;
console.log(weatherInfo, tweetInfo);
});
Đầu ra từ cả hai đều giống nhau. Chạy ở trên cho:
{ temp: 29, conditions: 'Sunny with Clouds' } [ 'I like cake', 'BBQ is good too!' ]
{ temp: 29, conditions: 'Sunny with Clouds' } [ 'I like cake', 'BBQ is good too!' ]