非同期関数でPromiseを繰り返し実行するにはどうすればよいですか?
P粉356128676
P粉356128676 2023-08-18 14:54:42
0
2
437
<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>
P粉356128676
P粉356128676

全員に返信(2)
P粉633075725

ここで、addPost は Promise 関数ではありません。そのため、「await addPost」と記述すると、変数 addPost が再初期化されるように見えます。これを機能させるには、promise 関数を呼び出す必要があります。こうすることで、呼び出し後に Promise の作業が実行されます。

以下は変更したコードです

リーリー

これが明確であれば、お知らせください。

###ありがとう###
いいねを押す +0
P粉770375450

new Promise() を使用して Promise を作成すると、すぐに実行が開始されます。これをテストするには、コンソールで new Promise(() => { console.log("hello") }) のようなコードを実行します。すぐにログが表示されます。

新しい Promise を返す関数を定義することで、必要な動作を実現できます。こうすることで、関数が呼び出されたときにのみ Promise が実行され、関数呼び出しごとに異なる Promise が返されます。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート