ホームページ  >  に質問  >  本文

非同期関数でPromiseを繰り返し実行するにはどうすればよいですか?

<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粉356128676P粉356128676429日前401

全員に返信(2)返信します

  • P粉633075725

    P粉6330757252023-08-19 13:31:19

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

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

    リーリー

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

    ###ありがとう###

    返事
    0
  • P粉770375450

    P粉7703754502023-08-19 13:07:09

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

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

    リーリー

    返事
    0
  • キャンセル返事