Pemahaman yang mendalam tentang JavaScriptPromise.all()
Promise.all()
ialah kaedah yang berkuasa dalam JavaScript untuk mengendalikan berbilang operasi tak segerak secara serentak. Ia menerima objek boleh lelar (biasanya tatasusunan) yang mengandungi berbilang Janji dan mengembalikan Janji tunggal. Janji tunggal ini hanya akan diselesaikan jika semua Janji input berjaya diselesaikan jika mana-mana Janji ditolak, Janji tunggal akan ditolak serta-merta. Panduan ini akan meneroka kefungsian, sintaks, tingkah laku dan contoh praktikal Promise.all()
.
Promise.all()
adalah mudah:
Promise.all(iterable);
Kaedah ini mengembalikan Janji dengan tingkah laku berikut:
Promise.all()
mengembalikan tatasusunan hasil dalam susunan yang sama dengan input Janji. Promise.all()
akan ditolak serta-merta dan alasan penolakan Janji akan dikembalikan. Dalam contoh ini kami mencipta tiga Janji yang diselesaikan selepas tamat masa yang berbeza:
const promise1 = new Promise((resolve) => setTimeout(() => resolve('One'), 1000)); const promise2 = new Promise((resolve) => setTimeout(() => resolve('Two'), 2000)); const promise3 = new Promise((resolve) => setTimeout(() => resolve('Three'), 3000)); Promise.all([promise1, promise2, promise3]) .then(values => console.log(values)) // 输出: ['One', 'Two', 'Three'] .catch(error => console.error(error));
Di sini, Promise.all()
menunggu ketiga-tiga Janji diselesaikan, kemudian log keputusannya ke konsol sebagai tatasusunan.
Anda juga boleh mencampurkan nilai yang diselesaikan dan Janji:
const p1 = Promise.resolve(42); const p2 = Promise.resolve('Hello'); const p3 = new Promise((resolve) => setTimeout(() => resolve('World'), 1000)); Promise.all([p1, p2, p3]) .then(values => console.log(values)) // 输出: [42, 'Hello', 'World'] .catch(error => console.error(error));
Dalam kes ini, p1 dan p2 menyelesaikan serta-merta, manakala p3 menyelesaikan selepas satu saat.
Jika salah satu Janji ditolak, Promise.all()
akan ditolak serta-merta:
const p1 = Promise.resolve(42); const p2 = Promise.reject(new Error('Failed!')); const p3 = new Promise((resolve) => setTimeout(() => resolve('This will not run'), 1000)); Promise.all([p1, p2, p3]) .then(values => console.log(values)) .catch(error => console.error(error.message)); // 输出: 'Failed!'
Di sini, kerana p2 ditolak, keseluruhan operasi gagal dan mesej ralat direkodkan.
Senario aplikasiPromise.all()
Promise.all()
ialah alat penting untuk mengurus berbilang operasi tak segerak dalam JavaScript. Ia memudahkan kod dengan membenarkan pembangun menunggu beberapa Janji diselesaikan sebelum meneruskan dengan logik lain. Walau bagaimanapun, adalah penting untuk mengendalikan kegagalan dengan betul, kerana kegagalan mana-mana satu Janji akan menyebabkan keseluruhan operasi gagal. Memahami cara menggunakan Promise.all()
dengan berkesan membolehkan anda menulis kod tak segerak yang lebih bersih dan cekap.
Rujukan: [1] https://www.php.cn/link/ebd58b8a3f1d72f4206201da62fb1204 [2] https://www.php.cn/link/9181a74736d3b86345dadbc90e29390e [3] https://www.php.cn/link/2a3e953a5e3d81e67945bce5519f84c8 [4] https://www.php.cn/link/4c0303ffb193bd5e66078909a15268aa [5] https://www.php.cn/link/9c25dc28b94e5226f1983330dc421cec [6] https://www.php.cn/link/b2f1384b8feb04d2de9a85124dc64613 [7] https://www.php.cn/link/f1e1fd9e97f59379ed79bdf258d55042 [8] https://www.php.cn/link/9a5859b8f76280c97c0c185a19d17014 [9] https://www.php.cn/link/d3f010d6bc392b904f63ce5792891b71 [10] https://www.php.cn/link/4d419d5b4274ea8faaf4f37410b97bd6
Atas ialah kandungan terperinci Promise.all(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!