Mencari Struktur Gelung yang Betul untuk Memastikan Kod Berasaskan Janji Berjalan Serentak
Apabila bekerja dengan kod berasaskan janji, struktur gelung yang betul ialah penting untuk menjamin pelaksanaan segerak bagi operasi tak segerak. Dalam senario yang diberikan, matlamatnya adalah untuk membina gelung yang memastikan pelaksanaan "db.getUser(email).then(function(res) { logger.log(res); })" dalam susunan yang betul semasa setiap lelaran.
Satu pendekatan menggunakan fungsi "promiseWhile" tersuai. Walaupun kaedah ini boleh berguna untuk senario umum, kaedah ini memperkenalkan kerumitan yang tidak perlu untuk kes khusus yang ada. Sebaliknya, penyelesaian yang lebih mudah ialah memanfaatkan fungsi manipulasi tatasusunan terbina dalam seperti map() dan reduce().
Janji Selari vs. Bersiri
Masalahnya terletak dalam keperluan untuk mengekalkan susunan respons, yang menghapuskan penggunaan pendekatan selari melalui Array.prototype.map(). Untuk membina rantai janji yang diingini dengan susunan terpelihara, Array.prototype.reduce() adalah lebih sesuai.
Contoh:
function fetchUserDetails(arr) { return arr.reduce(function(promise, email) { return promise.then(function() { return db.getUser(email).done(function(res) { logger.log(res); }); }); }, Promise.resolve()); }
Dengan menggunakan kaedah ini, pelaksanaan "db. getUser" dijamin bersiri, memastikan susunan keputusan dikekalkan. Kod ini boleh dipanggil seperti berikut:
var arrayOfEmailAddys = [...]; fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });
Pendekatan ini menghapuskan keperluan untuk gelung atau syarat yang kompleks dan memastikan pelaksanaan rantai janji yang betul, walaupun semasa berurusan dengan operasi tak segerak.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Pelaksanaan Segerak Kod Berasaskan Janji dalam Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!