Menyegerakkan Urutan Janji
Janji JavaScript menyediakan mekanisme yang berkuasa untuk mengendalikan operasi tak segerak. Walau bagaimanapun, terdapat situasi di mana kita perlu menyegerakkan pelaksanaan janji dalam susunan tertentu. Ini amat mencabar apabila kita ingin mengelakkan pelaksanaan awal atau gangguan daripada janji kemudian.
Lelaran Manual dengan Janji Rantaian
Satu pendekatan mudah untuk menyegerakkan janji adalah dengan mengulangi mereka secara manual, merantai menjanjikan satu demi satu:
function sequence(arr) { let index = 0; function next() { if (index < arr.length) { return arr[index++].then(next).catch(e => Promise.reject(e)); } } return next(); }
Fungsi ini berulang melalui pelbagai janji, menyelesaikan setiap satu mengikut turutan dan mengendalikan sebarang penolakan.
Menggunakan Bluebird Promise Library
Bluebird ialah perpustakaan janji popular yang menyediakan ciri tambahan untuk kawalan serentak, termasuk:
Promise.mapSeries(arr, function(item) { return processItem(item); }).then(function(results) { // process final results here }).catch(function(err) { // process array here });
Menggunakan ES7 Async/Await
ES7 memperkenalkan sintaks async/wait, yang memudahkan pengaturcaraan tak segerak dan menyediakan cara semula jadi untuk menyusun janji:
async function processArray(array, fn) { let results = []; for (let i = 0; i < array.length; i++) { let r = await fn(array[i]); results.push(r); } return results; // will be resolved value of promise }
Mengelakkan Pelaksanaan Awal
Untuk mengelakkan pelaksanaan awal janji, anda boleh buat mereka dalam gelung dan bukannya mengisytiharkannya lebih awal. Ini memastikan bahawa hanya janji semasa dilaksanakan sebelum janji seterusnya dibuat.
function sequenceDynamic(nextPromise) { let index = 0; function next() { const promise = nextPromise(index); if (promise) { return promise.then(() => next(++index)).catch(e => Promise.reject(e)); } } return next(); }
Fungsi yang dikemas kini ini mengambil fungsi panggil balik yang mengembalikan janji seterusnya untuk dilaksanakan. Fungsi ini terus berulang selagi panggilan balik mengembalikan janji yang sah.
Kesimpulan
Menyegerakkan janji dalam susunan tertentu boleh dicapai melalui lelaran manual, pustaka Bluebird, tak segerak /menunggu sintaks, atau dengan mengelakkan pelaksanaan awal. Adalah penting untuk memilih pendekatan yang paling sesuai dengan aplikasi dan persekitaran pembangunan anda.
Atas ialah kandungan terperinci Bagaimanakah anda boleh menyegerakkan urutan Janji dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!