Array.fromAsync() xây một mảng từ async iterable (hoặc sync iterable chứa promise), trả về một Promise.
- Lặp tuần tự và
awaittừng phần tử — khácPromise.all()chạy song song. Hợp khi nguồn là stream/paginated và bạn muốn xử lý lần lượt. - Hỗ trợ async iterator (
Symbol.asyncIterator), thứ màArray.from()không xử lý được.
js
async function* gen() { yield 1; yield 2; yield 3; }
await Array.fromAsync(gen()); // [1, 2, 3]
// có mapFn (cũng được await)
await Array.fromAsync([p1, p2], async (x) => x * 2);So sánh nhanh:
- Array.from(iter, fn) — đồng bộ, không await.
- Promise.all([...]) — song song, cần sẵn mảng promise.
- Array.fromAsync — tuần tự, await từng cái, nhận cả async iterable.
Lưu ý: vì tuần tự nên chậm hơn Promise.all khi các tác vụ độc lập — chọn theo nhu cầu thứ tự vs tốc độ.