Rumah > Artikel > hujung hadapan web > Adakah Panggilan Balik Promise Constructor Dilaksanakan Secara Seiring atau Asynchronously?
Pelaksanaan Asynchronous of Promise Constructor Callback
Soalan:
Dalam coretan kod berikut:
<code class="python">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y);</code>
Adakah fungsi y akan dilaksanakan secara tak segerak atau serentak?
Jawapan:
Pelaksanaan panggilan balik promise constructor bergantung pada pelaksanaan khusus daripada spesifikasi Promises/A.
Spesifikasi ES6, dalam Bahagian 25.4.3.1, menyatakan bahawa:
"Jika pelaksana tidak membuang pengecualian, objek Promise mesti dibina dalam dua langkah:"
Fungsi pelaksana mesti dipanggil dengan tiga argumen:
Walau bagaimanapun, pelaksanaan seterusnya .then() memanggil janji sentiasa tak segerak. Ini jelas dalam Bahagian 25.4.5.3.1 spesifikasi ES6, yang menerangkan algoritma "PerformPromiseThen":
"Jika nilai slot dalaman janji [[PromiseState]] "dipenuhi", ... "
"...Lakukan EnqueueJob("PromiseJobs", PromiseReactionJob, «fulfillReaction, value»)."
Begitu juga, jika janji itu ditolak, algoritma melakukan enqueue kerja tak segerak.
Kesimpulan:
Oleh itu, fungsi yang dihantar kepada pembina janji dilaksanakan secara serentak, manakala panggilan .then() seterusnya sentiasa dilaksanakan secara tak segerak mengikut spesifikasi ES6.
Atas ialah kandungan terperinci Adakah Panggilan Balik Promise Constructor Dilaksanakan Secara Seiring atau Asynchronously?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!