Standar baru menambahkan janji asli.
Di sini kita hanya akan membahas penggunaan rantai dan memikirkan detailnya.
1. Ulasan kemudian () dan catch ()
Fungsi callback dapat ditempatkan di parameter kemudian () dan catch () untuk menerima hasil akhir dari janji.
Kemudian () dapat menerima parameter, maka panggilan balik ini hanya akan dipanggil ketika Promise Resolve ().
Kemudian () juga dapat menerima parameter kedua, dan panggilan balik kedua digunakan untuk menangani situasi janji tolak ().
Catch () secara khusus menangani situasi janji tolak ().
Dengan kata lain, kemudian () dapat digunakan dua arah, dan menangkap () hanya dapat menangani tolak (). Namun, disarankan untuk menggunakan kemudian () untuk menangani tekad () dan menangkap () untuk menangani tolak ().
2. Namun, apa yang ingin saya bicarakan bukanlah hal di atas. Di atas hanyalah ulasan penggunaan dasar. Di sini kita akan mulai dengan rincian nilai pengembalian dan penggunaan rantai dari itu () dan metode kemudian ().
Kemudian dokumentasi resmi mengatakan bahwa baik itu () dan catch () mengembalikan janji, yang sangat menarik. (Saya seorang pemula di JS, dan saya tidak pernah terpapar dengan janji -janji sebelumnya di alam liar).
Pertama -tama, janji yang baru dikembalikan ini bukanlah janji asli;
Kedua, perubahan dalam keadaan janji yang baru dikembalikan (Resolve () atau Reject ().) Terkait dengan keadaan janji sebelumnya dan bagaimana kemudian () digunakan.
Pertama jelaskan situasi kemudian (): (tangkapan serupa)
var p1 = janji.
CATATAN: Task1 dan Task2 di atas keduanya adalah panggilan balik.
Di sini, P1 adalah janji yang dibuat dan secara langsung menyelesaikan ();
P2 adalah janji yang diperoleh dengan saat itu (), dan P3 juga merupakan janji yang diperoleh dengan saat itu ().
Jadi bagaimana keadaan P2 berubah, dan bagaimana dengan P3?
Saya akan menggunakan angka berikut untuk menjelaskan konsep ini:
di dalam,
1. An Octagon mewakili objek janji.
2. Lingkaran mewakili keadaan di dalam janji, dan panah hitam mewakili perubahan keadaan.
3. Panah kanan mewakili memanggil fungsi kemudian.
4. Yaitu, selama fungsi itu disebut, objek janji baru akan dihasilkan.
5. Saat memanggil fungsi itu, tidak tahu apa status objek janji sebelumnya, apakah itu tertunda atau diselesaikan? Ini tidak dapat diasumsikan dan tidak dapat dilihat di luar.
6. Panggilan dari fungsi itu tidak akan diblokir, yaitu, P2 dan P3 dihasilkan hampir secara instan, bahkan jika P1 masih secara perlahan memigrasi keadaannya sendiri.
Kita tahu bahwa keadaan P1 diselesaikan (lihat kode di atas). Namun, belum dijelaskan di sini bagaimana keadaan P2 dan P3 berubah, apakah itu diselesaikan atau ditolak? Lihatlah gambar baru di bawah ini.
Anda dapat melihat lebih banyak berlian.
Berlian mewakili fungsi panggilan balik yang dilewati ketika kemudian dipanggil. Belah ketupat ke atas mewakili proses disahkan dalam [diselesaikan untuk objek janji sebelumnya], dan belah ketupat ke bawah mewakili proses disahkan dalam [ditolak untuk objek janji sebelumnya].
Catatan: Dalam contoh ini, tidak ada pemrosesan untuk penolakan yang dilewati, yaitu, berlian ke bawah tidak boleh ditarik pada gambar di atas. Demi kenyamanan, kita hanya perlu tahu bahwa berlian ke atas dan ke bawah terkait dengan cara kita menggunakan atau menangkap. Mari kita lihat kode sampel lagi:
var p1 = janji.
Dapat dilihat bahwa kita tidak memberikan parameter kedua saat itu, yaitu, kita tidak menangani penolakan.
Untuk menambahkan, jika Anda ingin menangani penolakan, Anda dapat menggunakan atau menangkapnya. Catch digunakan secara khusus untuk menangani penolakan. Selain itu, tidak ada perbedaan antara saat itu.
1. Jika keadaan akhir P1 (tekad atau tolak) diproses dengan benar (ketika menelepon maka, panggilan balik yang sesuai dilewati, yaitu, ada berlian yang sesuai), maka keadaan P2 akan diubah untuk diselesaikan.
2. Jika keadaan akhir P1 (tekad atau tolak) tidak diproses dengan benar (ketika memanggil, panggilan balik yang sesuai tidak ada, yaitu, tidak ada berlian yang sesuai), maka keadaan P1 akan dialihkan ke P2 (keadaan menerima P1).
3. Lewati seperti ini.
4. Artikel ini tidak menjelaskan cara mendapatkan data akhir janji terakhir dalam panggilan balik, yaitu, bagaimana lulus data, ada banyak tutorial.
3. Berikut adalah beberapa contoh untuk merangkum artikel ini.
Dalam gambar tersebut, keadaan P1 diberikan, dan menyelesaikan atau ditolak oleh diri sendiri. Tujuannya adalah untuk meluncurkan keadaan akhir P2 dan P3.
Di atas adalah empat contoh independen, tanpa hubungan di antara mereka.
X berarti bahwa P3 tidak menggunakan fungsi saat itu atau menangkap, jadi tidak ada cara untuk menangani resolusi atau menolak.
Akhirnya, jika ada kesalahan, harap perbaiki saya tepat waktu, terima kasih! ~! Lai @~~~
Artikel di atas, pemahaman mendalam tentang rantai JS Promise adalah semua konten yang telah saya bagikan dengan Anda. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.