Dalam bidang JavaScript, janji telah mencetuskan revolusi, namun intipati sebenar mereka masih sukar difahami oleh ramai orang. Mari kita bongkar misteri yang menyelubungi janji dengan meneroka bagaimana ia mengatasi panggilan balik semata-mata.
Janji bukan sekadar panggilan balik. Mereka merangkumi hasil masa depan operasi tak segerak. Apabila distrukturkan dengan betul, janji memberi kuasa kepada anda untuk mencipta kod tak segerak yang hampir menyerupai kod segerak, meningkatkan kebolehbacaan dan kefahaman.
Pertimbangkan coretan kod berikut:
api().then(function(result){ return api2(); }).then(function(result2){ return api3(); }).then(function(result3){ // do work });
Walaupun ia mungkin kelihatan seperti kod tambahan , struktur ini meningkatkan kebolehbacaan dengan ketara. Tetapi janji menawarkan lebih daripada estetika.
Pengendalian ralat menjadi mudah dengan janji:
api().then(function(result){ return api2(); }).then(function(result2){ return api3(); }).then(function(result3){ // do work }).catch(function(error) { //handle any error that may occur before this point });
Cermin sintaks yang ringkas lagi berkuasa ini cuba { ... } blok tangkapan, memberikan blok yang mudah dan cara yang berkesan untuk mengurus ralat.
Janji juga membenarkan pelaksanaan selari asynchronous operasi:
Promise.all([api(), api2(), api3()]).then(function(result) { //do work. result is an array contains the values of the three fulfilled promises. }).catch(function(error) { //handle the error. At least one of the promises rejected. });
Tanpa janji, melaksanakan fungsi tersebut memerlukan mekanisme yang berbelit-belit. Dengan janji, ini adalah soal keanggunan dan kesederhanaan.
Akhir sekali, janji menawarkan kelebihan penting bersama-sama dengan ES6. Ia menyediakan binaan rantaian janji yang mudah yang membolehkan kod anda mengalir dengan lancar, walaupun ketika berurusan dengan operasi tak segerak:
(async () => { try { const result1 = await api1(); const result2 = await api2(result1); const result3 = await api3(result2); // Do work with result3 } catch (error) { // Handle errors } })();
Kod ini menggunakan sintaks tak segerak/menunggu, menukar kod tak segerak kepada sebahagian daripada segerak -seperti logik. Menjanjikan, bukan?
Atas ialah kandungan terperinci Bagaimanakah Janji JavaScript Meningkatkan Pengaturcaraan Asynchronous Melebihi Panggilan Balik Mudah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!