Rumah >hujung hadapan web >tutorial js >Apakah Perintah Pelaksanaan dalam Janji JavaScript?

Apakah Perintah Pelaksanaan dalam Janji JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-10-24 11:22:02966semak imbas

What Is the Order of Execution in JavaScript Promises?

Apakah susunan pelaksanaan dalam janji JavaScript?

Janji JavaScript ialah cara untuk mengendalikan operasi tak segerak. Apabila janji diselesaikan, ia melaksanakan pengendali .then()nya secara tidak segerak selepas urutan pelaksanaan semasa selesai. Ini bermakna bahawa sebarang kod segerak dalam urutan semasa akan dijalankan sebelum pengendali .then().

Contoh

Pertimbangkan coretan kod berikut:

<code class="javascript">Promise.resolve('A')
  .then(function(a){console.log(2, a); return 'B';})
  .then(function(a){
     Promise.resolve('C')
       .then(function(a){console.log(7, a);})
       .then(function(a){console.log(8, a);});
     console.log(3, a);
     return a;})
  .then(function(a){
     Promise.resolve('D')
       .then(function(a){console.log(9, a);})
       .then(function(a){console.log(10, a);});
     console.log(4, a);})
  .then(function(a){
     console.log(5, a);});
console.log(1);
setTimeout(function(){console.log(6)},0);</code>

Hasilnya coretan kod ini ialah:

<code class="text">1
2 "A"
3 "B"
7 "C"
4 "B"
8 undefined
9 "D"
5 undefined
10 undefined
6</code>

Penjelasan

  1. Baris 1: Kod bermula dengan menyelesaikan janji dengan nilai 'A'.
  2. Baris 2-4: Pengendali .then() pada janji ini mencatatkan nilai 'A' ke konsol dan mengembalikan nilai 'B'.
  3. Baris 5-9: Pengendali .then() pada janji yang dikembalikan oleh pengendali sebelumnya merekodkan nilai 'B' ke konsol dan mengembalikan nilai yang sama.
  4. Baris 10-14 : Pengendali .then() pada janji yang dikembalikan oleh pengendali sebelumnya merekodkan nilai 'B' ke konsol dan mengembalikan nilai yang sama.
  5. Baris 15-19: Pengendali .then() pada janji yang dikembalikan oleh pengendali sebelumnya merekodkan nilai 'B' ke konsol dan mengembalikan nilai yang sama.
  6. Baris 20: Pengendali .then() pada janji yang dikembalikan oleh pengendali sebelumnya mencatatkan nilai 'B' ke konsol.
  7. Baris 21: Fungsi setTimeout() digunakan untuk menjadualkan fungsi yang akan dilaksanakan selepas kelewatan daripada 0 milisaat.
  8. Baris 22: Fungsi console.log() digunakan untuk log nilai '1' ke konsol.

Tertib Pelaksanaan

Turutan pelaksanaan dalam coretan kod ini ialah:

  1. Console.log() pada baris 22 dilaksanakan dahulu, diikuti dengan Promise.resolve() pada baris 1 .
  2. Pengendali .then() pada baris 2 dilaksanakan seterusnya, diikuti oleh pengendali .then() pada baris 5.
  3. Pengendali .then() pada baris 10 dilaksanakan seterusnya , diikuti oleh pengendali .then() pada baris 15.
  4. Pengendali .then() pada baris 20 dilaksanakan seterusnya.
  5. Fungsi setTimeout() pada baris 21 dilaksanakan terakhir.

Atas ialah kandungan terperinci Apakah Perintah Pelaksanaan dalam Janji JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn