Promise dalam JavaScript menyediakan cara yang elegan untuk mengendalikan operasi tak segerak. Bergantung pada perpustakaan yang anda gunakan, anda mungkin menghadapi dua API berbeza yang berkaitan dengan janji: defer().promise dan Promise.
Fungsi defer() dalam API legasi mencipta objek tertunda, yang mewakili keadaan janji (diselesaikan atau ditolak) dan menyediakan kaedah untuk mengawalnya secara manual. Anda boleh menyelesaikan janji dengan memanggil kaedah resolve(), yang menerima nilai yang menjadi hasil janji. Janji dikembalikan oleh defer().promise merangkum objek tertunda ini.
Promise constructor mencipta janji secara langsung, membolehkan anda menentukan fungsi penyelesai dan penolakan sebagai argumen. Fungsi ini mewakili tindakan yang akan memenuhi atau menolak janji masing-masing.
Perbezaan utama antara kedua-dua API ini terletak pada keselamatan lontaran. Pembina Promise adalah selamat lontaran, bermakna jika pengecualian dilemparkan dalam fungsi pelaksana (penyelesai atau penolakan), janji itu akan ditolak sebaliknya.
Sebaliknya, API penangguhan warisan tidak selamat lontaran . Jika pengecualian dilemparkan dalam kaedah objek tertunda (resolve() atau reject()), ia akan disebarkan secara serentak, yang boleh membawa kepada ralat yang tidak dijangka.
Disebabkan penambahbaikan keselamatan lempar dan sintaks moden, pembina Promise ialah API yang disyorkan untuk bekerja dengan janji. Ia memudahkan pengendalian ralat dan menghalang ralat pengaturcara biasa.
Atas ialah kandungan terperinci Defer().promise vs. Promise: JavaScript Promise API manakah yang Lebih Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!