Saya memiliki spesifikasi dari klien untuk implementasi metode dalam modul:
// getGenres():
// Returns a promise. When it resolves, it returns an array.
Jika diberi berbagai genre,
['comedy', 'drama', 'action']
Berikut adalah metode kerangka dengan janji:
MovieLibrary.getGenres = function() {
var promise = new Promise(function(resolve, reject) {
/* missing implementation */
});
return promise;
};
Bisakah janji dibuat untuk mengembalikan data yang ditemukan dalam genre? Apakah ada cara yang lebih baik untuk mencapai deskripsi spesifikasi?
javascript
sealocal
sumber
sumber
resolve([genre1, genre2, ...]);
di dalam implementasi janji.Jawaban:
Sepertinya Anda tidak mengerti bagaimana janji digunakan. Anda mengembalikan janji. Kemudian, nanti ketika kode Anda menyelesaikan janji, itu menyelesaikannya dengan hasil dan hasil itu diteruskan ke
.then()
pawang yang terlampir pada janji:sumber
Versi yang diperbarui menggunakan
await
daripada.then()
.await
berhenti mengeksekusi sampai Janji telah terselesaikan (yaitu, memiliki nilai). Tidak seperti menggunakan.then()
Anda hanya bisa menyimpanawait
nilai ketika Anda menjalankan berbagai fungsi yang mengembalikan janji, dan eksekusi berlanjut ke baris berikutnya (ini disebut 'gaya langsung). Ini juga jauh lebih baik untuk dilihat, karena ini konsisten dengan sisa JavaScript, daripada di.then()
mana - mana.Menunggu didukung di semua browser dan node saat ini
sumber