2

次のようなループがあります。

    newThreadIds.map(async function(id) {
      let thread = await API.getThread(id);
      await ActiveThread.findOneAndUpdate({number: id}, {posts: thread.posts}, {upsert: true}).exec();
      await Q.delay(1000);
    });

問題は、各反復が非同期で実行されることであり、その間に 1 秒の遅延が必要です。私は約束を使ってそれを行う方法を知っていますが、見た目が悪いので、async/await を使用し、ネストをできるだけ少なくしたいと考えています。

4

2 に答える 2

6

私はそれを理解しました:

    for (let id of newThreadIds) {
      let thread = await API.getThread(id);
      await ActiveThread.findOneAndUpdate({number: id}, {posts: thread.posts}, {upsert: true}).exec();
      await Q.delay(1000);
    }

おそらく、ES2015 と async/await を使用するのが最善の方法です。

于 2016-02-25T16:14:28.880 に答える