Pembina Promise menerima fungsi pelaksana yang mentakrifkan logik pemenuhan janji. Satu persoalan utama timbul: adakah fungsi pelaksana ini dilaksanakan secara tak segerak atau serentak?
Tingkah laku bergantung pada pelaksanaan Janji itu sendiri. Walau bagaimanapun, piawaian ES6 untuk Janji secara eksplisit menyatakan bahawa pemenuhan janji adalah sentiasa tak segerak.
Merujuk kepada spesifikasi, kami mendapati bahawa pelaksana berfungsi (dalam kes kami, fungsi y ) sememangnya dilaksanakan secara serentak (lihat langkah 10 spesifikasi). Walau bagaimanapun, panggilan seterusnya ke .then() pada promise, seperti promise.then(...), sentiasa dilaksanakan secara tak segerak (lihat langkah 8 algoritma "PerformPromiseThen").
Sifat tak segerak bagi panggilan .then() ini mempunyai beberapa implikasi:
Pertimbangkan coretan kod berikut:
<code class="javascript">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y); promise.then(() => { console.log("Then handler executed after the synchronous execution of y"); });</code>
Dalam contoh ini, fungsi y dilaksanakan secara serentak. Walau bagaimanapun, pengendali .then() dilaksanakan secara tak segerak setelah gelung acara selesai. Output kod ini ialah:
Result Then handler executed after the synchronous execution of y
Atas ialah kandungan terperinci Adakah Fungsi Pelaksana Promise Constructor Segerak atau Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!