非同期関数でPromiseを繰り返し実行するにはどうすればよいですか?
P粉356128676
2023-08-18 14:54:42
<p>Promise と async await を学習しています。ここでは、addPost 関数を呼び出してオブジェクトを 2 回プッシュし、オブジェクト配列をループして結果を確認したいのですが、このコードでは結果は次のようになりません。期待される。ここで、コードが showDetails() 関数に対して実行されると、4 つのオブジェクトがあるはずのときに 3 つのオブジェクトしか表示されません。ここで何が足りないのでしょうか? </p>
<p><br /></p>
<pre class="brush:js;toolbar:false;">const jobs = [{ title: '投稿 1' }, { title: '投稿 2' }];
変数カウント = 3;
const diffFunction = async () => {
const addPost = new Promise((解決、拒否) => {
setTimeout(() => {
photos.push({ title: `投稿 ${count}` });
カウント ;
解決(カウント);
}、1000)
})
const deletePost = new Promise((res, rej) => {
setTimeout(() => {
const deltedPost = post.pop();
res(deltedPost);
}、2000)
})
const showDetails = () => {
photos.forEach(element => {
console.log(要素.タイトル);
});
}
addPostを待ちます。
addPostを待ちます。
詳細を表示();
}
diffFunction();</pre>
<p><br /></p>
ここで、addPost は Promise 関数ではありません。そのため、「await addPost」と記述すると、変数 addPost が再初期化されるように見えます。これを機能させるには、promise 関数を呼び出す必要があります。こうすることで、呼び出し後に Promise の作業が実行されます。
以下は変更したコードです
リーリーこれが明確であれば、お知らせください。
###ありがとう###new Promise()
新しい Promise を返す関数を定義することで、必要な動作を実現できます。こうすることで、関数が呼び出されたときにのみ Promise が実行され、関数呼び出しごとに異なる Promise が返されます。を使用して Promise を作成すると、すぐに実行が開始されます。これをテストするには、コンソールで
new Promise(() => { console.log("hello") })のようなコードを実行します。すぐにログが表示されます。