Permintaan asynchronous ES6 mempunyai tiga keadaan: 1. belum selesai (keadaan menunggu), maka dan tangkapan tidak akan dicetuskan; 2. memenuhi (keadaan berpuas hati), apabila azam dipanggil semula secara aktif, ia akan berada dalam keadaan ini dan akan Panggil balik kemudian(); 3. tolak (status penolakan) akan mencetuskan fungsi panggil balik tangkapan seterusnya.
Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.
Promise ialah penyelesaian untuk pengaturcaraan tak segerak:
1 Terutamanya digunakan untuk pengiraan tak segerak
2 pesanan yang dijangkakan dan kembalikan hasil yang diharapkan
3. Janji boleh diluluskan dan dimanipulasi antara objek untuk membantu kami memproses baris gilir
Janji mempunyai tiga keadaan:
1. belum selesai [ditentukan] keadaan awal
2. operasi telah berjaya
3 perubahan, fungsi tindak balas dalam then() akan dicetuskan untuk memproses langkah seterusnya;
Keadaan objek Promise berubah Setelah keadaan dua janji berubah, tiada kemungkinan variasi: daripada belum selesai kepada dipenuhi
Daripada belum selesai kepada ditolak.
Selagi dua situasi ini berlaku, status akan menjadi kukuh dan tidak akan berubah lagi.
Apa yang dicetak ialah status azam, panggilan balik yang mencetuskan peralihan azam
Lihat yang seterusnya
Jika ralat dilaporkan, ia akan mengembalikan janji dalam keadaan janji dan mencetuskan panggilan balik tangkapan, selagi terdapat ralat, jika ada
.maka tidak akan dilaksanakan SahajaLihat di bawah
Tiada objek janji ralat yang dilemparkan, atau keadaan penyelesaian
Akhirnya lihat yang seterusnya
Selagi objek janji yang salah dilempar, ia dalam keadaan menolak
Teguhkannya dengan soalan Memahami peralihan janjiSoalan 1:
Cetak mengikut urutan 1 3, 2 tidak akan dicetak kerana tangkapan tidak akan dilaksanakan (janji.maka dalam azam state and catch tidak akan dilaksanakan) Soalan 2: Kembalikan 1 2 3, kerana Apabila mencetak 1, objek ralat dilemparkan ia mengembalikan janji dalam keadaan tolak, dan masuk keadaan tolak. Walau bagaimanapun, .catch ialah janji dalam keadaan tekad, jadi .kemudian dilaksanakan semula, dan akhirnya keadaan tekad dikembalikan
Semua kaedah Promise
[Pembelajaran yang disyorkan:
tutorial lanjutan javascriptPromise.all(iterator)Promise.all([ new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve('result1') },2000) }), new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve('result2') },1000) })]).then(results =>{ results[0] results[1] console.log(results)})
Atas ialah kandungan terperinci Apakah tiga keadaan permintaan tak segerak es6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!