Dalam JavaScript, terdapat kaedah yang dipanggil "Promise.all" yang membolehkan anda menjalankan satu siri Janji secara selari. Walau bagaimanapun, mungkin ada kalanya anda ingin terus memenuhi komitmen anda. Ini berguna jika anda ingin memastikan bahawa setiap Janji dilaksanakan mengikut turutan, atau jika anda perlu menggunakan hasil satu Janji apabila melaksanakan Janji seterusnya.
Terdapat beberapa cara berbeza anda boleh menjalankan satu siri Janji berturut-turut dalam JavaScript. Dalam artikel ini, kami akan memperkenalkan beberapa daripada mereka.
Salah satu cara untuk menjalankan tatasusunan Promise dalam siri ialah merantainya bersama-sama menggunakan kaedah then(). Kaedah ini menerima sebagai input fungsi yang akan dilaksanakan selepas Janji selesai.
<html> <head> <title>Examples</title> </head> <body> <div id="result1"></div> <div id="result2"></div> <div id="result3"></div> <script> Promise.resolve(1) .then(result => { document.getElementById("result1").innerHTML = result return Promise.resolve(2); }) .then(result => { document.getElementById("result2").innerHTML = result return Promise.resolve(3); }) .then(result => { document.getElementById("result3").innerHTML = result }); </script> </body> </html>
Seperti yang anda lihat, kami merangkai tiga Janji bersama menggunakan kaedah then(). Janji pertama diselesaikan kepada nilai 1 dan memaparkan nilai itu. Janji kedua diselesaikan kepada nilai 2, yang juga dipaparkan. Akhir sekali, Janji ketiga menyelesaikan kepada nilai 3 dan memaparkan nilai itu.
Oleh kerana kaedah "kemudian" mengembalikan Janji, kita boleh rantai Janji bersama-sama dengan cara ini untuk mencipta satu siri.
Cara lain untuk menjalankan tatasusunan Janji dalam siri ialah menggunakan gelung "untuk-menunggu". Gelung ini membolehkan anda menggunakan kata kunci tunggu di dalam gelung untuk. Kata kunci tunggu menjeda pelaksanaan kod sehingga janji dipenuhi.
Berikut ialah contoh -
<html> <head> <title>Example- for-await-of</title> </head> <body> <script> async function runPromisesInSeries() { for await (const promise of [ Promise.resolve(1), Promise.resolve(2), Promise.resolve(3), ]) { const result = await promise; document.write(result); document.write("<br>") } } runPromisesInSeries(); </script> </body> </html>
Dalam contoh ini kita mempunyai fungsi tak segerak yang mengandungi gelung "untuk-menunggu". Gelung ini berulang melalui satu siri Janji. Untuk setiap janji dalam tatasusunan, kami menunggu janji itu ditunaikan. Setelah Janji dipenuhi, nilainya dipaparkan.
Jika anda memerlukan lebih banyak fungsi daripada yang disediakan oleh Promise API asli, anda boleh menggunakan perpustakaan seperti Bluebird atau S: Perpustakaan ini menyediakan kaedah tambahan untuk bekerja dengan Promise.
Sebagai contoh, Bluebird menyediakan kaedah "peta" yang membolehkan anda memetakan tatasusunan nilai kepada tatasusunan Janji dan kemudian tunggu sehingga semua nilai dipenuhi -
const Promise = require('bluebird'); Promise.map([1, 2, 3], x => { return Promise.resolve(x * 2); }).then(results => { console.log(results); // [2, 4, 6] });
Dalam artikel ini, kami belajar tentang keterkaitan dalam JavaScript Beberapa cara berbeza untuk menjalankan satu siri Janji. Kami telah melihat cara untuk merangkai Janji bersama-sama menggunakan kaedah "kemudian", cara menggunakan gelung "untuk-menunggu" dan cara menggunakan perpustakaan seperti Bluebird atau Q.
Atas ialah kandungan terperinci Bagaimana untuk menjalankan pelbagai Janji yang diberikan secara berterusan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!