{...})"; ia memegang status operasi tak segerak dan digunakan untuk mewakili keputusan yang berbeza untuk operasi tak segerak."/> {...})"; ia memegang status operasi tak segerak dan digunakan untuk mewakili keputusan yang berbeza untuk operasi tak segerak.">
Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah kegunaan janji dalam es6
Dalam es6, promise digunakan untuk mencipta objek janji dan melaksanakan operasi tak segerak ialah "const promise = new Promise((resolve,reject)=>{...})"; Status operasi digunakan untuk mewakili hasil yang berbeza bagi operasi tak segerak.
Persekitaran pengendalian tutorial ini: sistem Windows 10, ECMAScript versi 6.0, komputer Dell G3.
Promise ialah penyelesaian pengaturcaraan tak segerak yang disediakan dalam ES6 Promise sendiri ialah pembina
typeof Promise // function
Secara amnya kami Dalam pembangunan, baru. Promise() akan digunakan untuk memanggil pembina dan mencipta objek Promise baharu
Cipta objek Promise untuk operasi tak segerak
Promise juga merupakan pembina dan keperluan Gunakan kata kunci baharu untuk mencipta contoh, yang menerima fungsi apabila dibuat, dan fungsi itu mempunyai dua parameter jenis fungsi:
selesaikan
tolak
Jadi operasi mencipta Janji ialah:
const promise = new Promise((resolve,reject)=>{...})
Dua parameter fungsi menyelesaikan dan menolak menentukan perubahan status Janji semasa dan cara mengendalikan hasil operasi tak segerak , semuanya boleh lulus keputusan operasi tak segerak.
1. Keadaan objek tidak dipengaruhi oleh dunia luar.
Objek Promise ialah operasi tak segerak dan mempunyai tiga keadaan: belum selesai (sedang berjalan), dipenuhi (berjaya) dan ditolak (gagal).
Hanya hasil daripada operasi tak segerak boleh menentukan keadaan Promise dan tiada operasi lain boleh mengubah keadaan ini
2 Sebaik sahaja keadaan Promise berubah, tidak akan ada lebih banyak perubahan, dan keputusan ini boleh diperolehi pada bila-bila masa.
Hanya ada dua kemungkinan untuk keadaan objek Janji berubah: daripada belum selesai kepada dipenuhi atau daripada belum selesai kepada ditolak. Selagi dua situasi ini berlaku, status tidak akan berubah dan akan sentiasa mengekalkan keputusan ini. Ini dipanggil diselesaikan. Jika perubahan telah berlaku, jika anda menambah fungsi panggil balik pada objek Promise, anda akan mendapat keputusan serta-merta. Ini berbeza daripada acara. Ciri acara ialah jika anda terlepas dan mendengar lagi, anda tidak akan mendapat hasilnya
Kelebihan menggunakan Promise ialah apabila memproses program tak segerak, operasi tak segerak akan menjadi Beratur, melaksanakan dalam susunan yang dijangkakan dan mengembalikan hasil yang dijangkakan, supaya walaupun dengan beberapa operasi tak segerak, Promise boleh digunakan dengan mudah untuk panggilan berantai
3. Promise juga mempunyai beberapa kelemahan.
Pertama sekali, Janji tidak boleh dibatalkan Sebaik sahaja ia dibuat, ia akan dilaksanakan serta-merta dan tidak boleh dibatalkan di tengah jalan. Kedua, jika anda tidak menetapkan fungsi panggil balik, ralat yang dilemparkan secara dalaman oleh Promise tidak akan ditunjukkan secara luaran. Ketiga, apabila ia berada dalam keadaan tertunda, adalah mustahil untuk mengetahui tahap kemajuan semasa (baru bermula atau hampir selesai)
Apa yang dipanggil Janji hanyalah sebuah bekas, yang memegang tertentu. masa depan yang akan berakhir Hasil daripada peristiwa (biasanya operasi tak segerak).
ES6 menetapkan bahawa objek Promise ialah pembina yang digunakan untuk menjana contoh Promise.
Kod berikut mencipta contoh Promise.
const promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } });
Pembina Promise menerima fungsi sebagai parameter Dua parameter fungsi ialah menyelesaikan dan menolak. Ia adalah dua fungsi yang disediakan oleh enjin JavaScript dan tidak perlu digunakan sendiri.
Fungsi fungsi resolusi adalah untuk menukar status objek Promise daripada "belum selesai" kepada "berjaya" (iaitu, daripada belum selesai kepada diselesaikan, ia dipanggil apabila operasi tak segerak berjaya, dan hasil daripada operasi tak segerak ialah Keluarkannya sebagai parameter fungsi fungsi tolak adalah untuk menukar status objek Promise daripada "belum selesai" kepada "gagal" (iaitu, daripada belum selesai kepada ditolak), dan dipanggil apabila operasi tak segerak gagal, dan ralat yang dilaporkan oleh operasi tak segerak ialah , diluluskan sebagai parameter.
Selepas contoh Promise dijana, anda boleh menggunakan kaedah kemudian untuk menentukan fungsi panggil balik masing-masing untuk keadaan diselesaikan dan keadaan ditolak.
promise.then(function(value) { // success }, function(error) { // failure });
Kemudian kaedah boleh menerima dua fungsi panggil balik sebagai parameter. Fungsi panggil balik pertama dipanggil apabila keadaan objek Promise diselesaikan, dan fungsi panggil balik kedua dipanggil apabila keadaan objek Promise ditolak. Antaranya, fungsi kedua adalah pilihan dan tidak perlu disediakan. Kedua-dua fungsi menerima nilai yang diluluskan oleh objek Promise sebagai parameter.
[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]
Atas ialah kandungan terperinci Apakah kegunaan janji dalam es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!