Bagaimana untuk melaksanakan Promise berulang kali dalam fungsi async?
P粉356128676
2023-08-18 14:54:42
<p>Saya sedang belajar janji dan async menanti, di sini saya mahu memanggil fungsi addPost dan menolak objek dua kali, kemudian saya mahu menggelung melalui tatasusunan objek untuk melihat hasilnya, tetapi dalam kod ini hasilnya tidak seperti dijangka. Di sini, apabila kod dilaksanakan pada fungsi showDetails(), ia hanya menunjukkan 3 objek apabila terdapat empat objek, apakah yang saya hilang di sini? </p>
<p><br /></p>
<pre class="brush:js;toolbar:false;">const posts = [{ tajuk: 'Siaran 1' }, { tajuk: 'Siaran 2' }];
kiraan var = 3;
const diffFunction = tak segerak () =>
const addPost = Janji baharu((selesaikan, tolak) => {
setTimeout(() => {
posts.push({ tajuk: `Catatan ${count}` });
kira++;
menyelesaikan (kira);
}, 1000)
})
const deletePost = Janji baharu((res, rej) => {
setTimeout(() => {
const deltedPost = posts.pop();
res(deltedPost);
}, 2000)
})
const showDetails = () =>
posts.forEach(elemen => {
console.log(element.title);
});
}
tunggu addPost;
tunggu addPost;
showDetails();
}
diffFunction();</pre>
<p><br /></p>
Di sini, addPost anda bukan fungsi janji. Itulah sebabnya apabila anda menulis "tunggu addPost" nampaknya pembolehubah addPost dimulakan semula. Agar ini berfungsi, anda perlu memanggil fungsi janji. Dengan cara ini ia akan melaksanakan kerja janji selepas anda memanggilnya.
Berikut ialah kod anda yang diubah suai
Jika ini jelas kepada anda, sila beritahu saya.
Terima kasih
Apabila anda menggunakan kod
new Promise()
创建一个promise时,它会立即开始运行。你可以通过在控制台中运行类似于new Promise(() => { console.log("hello") })
untuk menguji ini - anda sepatutnya melihat log dengan serta-merta.Anda boleh mencapai tingkah laku yang anda inginkan dengan menentukan fungsi yang mengembalikan Janji baharu. Dengan cara ini, janji anda hanya akan dijalankan apabila fungsi dipanggil, dan setiap panggilan fungsi akan mengembalikan Janji yang berbeza.