อัปเดตพฤษภาคม 2019 โดยใช้ RxJs v6
พบว่าคำตอบอื่น ๆ มีประโยชน์และต้องการเสนอตัวอย่างสำหรับคำตอบที่ Arnaud นำเสนอเกี่ยวกับzip
การใช้งาน
นี่คือตัวอย่างข้อมูลที่แสดงความเท่าเทียมกันระหว่างPromise.all
rxjs zip
(โปรดทราบด้วยว่าใน rxjs6 ตอนนี้ zip นำเข้าโดยใช้ "rxjs" ได้อย่างไรและไม่ใช่ตัวดำเนินการ)
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);
});
ผลลัพธ์จากทั้งสองเหมือนกัน การดำเนินการข้างต้นให้:
{ 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!' ]