Mengakses Nilai Janji
Janji biasanya digunakan untuk operasi tak segerak dalam JavaScript. Salah satu kaedah utama untuk berinteraksi dengan janji ialah kaedah .then(). Kaedah ini membolehkan kami merantai berbilang janji dan mengakses nilai janji sebelumnya dalam janji berikutnya.
Pertimbangkan contoh Sudut berikut:
promiseB = promiseA.then(function(result) { return result + 1; });
Contoh ini mentakrifkan promiseB sebagai janji baharu yang diselesaikan serta-merta selepas promiseA diselesaikan. Menurut dokumentasi Angular, "nilainya akan menjadi hasil promiseA yang dinaikkan sebanyak 1."
Timbul persoalan: bagaimanakah objek janji, yang jenis Objek, memegang nilai primitif seperti nombor?
Jawapannya terletak pada semantik kaedah .then(). Fungsi panggil balik kejayaan yang diberikan kepada .then() mengembalikan nilai baharu yang menjadi nilai janji baharu. Dalam kes ini, fungsi panggil balik kejayaan mengembalikan hasil 1, yang menambah nilai hasil dan mengembalikannya sebagai nilai promiseB.
Untuk mengakses nilai promiseB, kita boleh merantai kaedah .then() yang lain dan menyediakan fungsi panggil balik kejayaan:
promiseB.then(function(result) { // Use the result of promiseB here });
Dalam panggilan balik ini, kami akan mempunyai akses kepada nilai hasil, iaitu nilai tambahan daripada sebelumnya promise.
ES7 (2016) memperkenalkan sintaks async/wait, menawarkan cara alternatif untuk mengendalikan janji. Menggunakan await, kita boleh membuka nilai janji secara langsung, menghapuskan keperluan untuk merantai pelbagai kaedah .then(). Contohnya:
async function doSomething() { let result = await functionThatReturnsPromiseA(); return result + 1; }
Dalam contoh ini, kata kunci await digunakan dalam fungsi async. Kata kunci await menjeda pelaksanaan fungsi sehingga functionThatReturnsPromiseA() selesai. Setelah janji diselesaikan, nilai janji diberikan kepada pembolehubah hasil dan fungsi meneruskan pelaksanaan.
Atas ialah kandungan terperinci Bagaimanakah Janji, Objek dalam JavaScript, Memegang Nilai Primitif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!