Seperti yang saya pahami, sebuah promise adalah sesuatu yang dapat menyelesaikan () atau menolak () tetapi saya terkejut saat mengetahui bahwa kode dalam promise terus dijalankan setelah penyelesaian atau penolakan dipanggil.
Saya mempertimbangkan untuk menyelesaikan atau menolak menjadi versi keluar atau kembali yang ramah asinkron, yang akan menghentikan semua eksekusi fungsi langsung.
Adakah yang bisa menjelaskan pemikiran di balik mengapa contoh berikut terkadang menunjukkan console.log setelah panggilan penyelesaian:
var call = function() {
return new Promise(function(resolve, reject) {
resolve();
console.log("Doing more stuff, should not be visible after a resolve!");
});
};
call().then(function() {
console.log("resolved");
});
resolve()
bukanlah pernyataan kontrol JS yang secara ajaib akan memiliki efekreturn
, itu hanya pemanggilan fungsi, dan ya, eksekusi berlanjut setelahnya.