var p = new Promise((resolve, reject) => {
//这里的参数若是thenable的,规范有提到加入job队列,必然是异步的
//但是比如参数是数字,在返回promise之前,就已经修改了它的状态,这样似乎是同步的了
resolve(3);
});
console.dir(p.[[state]]);
Adakah kod di atas segerak? Iaitu, jika ada p.[[state]]
,那么应该打印出fulfilled
,而不是pendding
.
p.then
Fungsi panggil balik dalam kaedah adalah tak segerak, jadi ia sepatutnya baik
Ini sudah pasti disegerakkan.
Kod anda ini memang disegerakkan, ada cara mudah untuk mengesahkannya
Lihat kod di atas adakah ia menaip 'masuk' dahulu? Ini bermakna azam dan penolakan pelaksanaan Janji baharu adalah serentak Jika anda ingin menjadikannya tidak segerak, anda boleh menulisnya seperti berikut:
Selain itu, pelaksanaan
then
sememangnya tidak segerak dan boleh disahkan menggunakan kaedah yang serupa.Dengan cara ini, Promise mempunyai corak yang biasa digunakan, yang membungkus hasil penyegerakan ke dalam Promise untuk menghapuskan perbezaan antara panggilan segerak dan tak segerak: