検索

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

JavaScript - ノードの非同期の問題

findById の後にコールバックを実行したいのですが、コールバックに配置できません。そうしないと、複数回実行されてしまいます。どうすればいいですか?

大家讲道理大家讲道理2842日前383

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

  • 漂亮男人

    漂亮男人2017-05-16 13:25:54

    ソフトウェアはサービス業です、サービス意識を持たなければなりません... コードマップには問題はなく、はっきりと見ることができますが、回答者がコードを変更したい場合は、再度コードを入力する必要があります...

    すでに es6 構文を使用しているようですので、正しい解決策は Promise でなければなりません。これは自分で Promies にカプセル化できます

    リーリー

    もちろん、Bluebird が提供するツール機能を使用して Promise をカプセル化することもできます

    ここでは複数の非同期呼び出しを実行しているため、それらをまとめて返したい場合は、複数の結果が存在する必要があることに注意してください。したがって、Promise.all 后面 then() のコールバックに注目してください。

    es5 を使用したい場合は、es6 を作成してから Babel を使用することをお勧めします。ただし、Node 7.6 以降はすでに es2017 の一部の機能をサポートしているため、実際にはこの問題について心配する必要はありません。本当に必要な場合は、findById コールバックでカウントするメソッドを使用して、拡大の移動をカウントアップします (コールバックを呼び出します)。

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:25:54

    オプション 1

    async/await。这样就可以按照同步方式使用 User.findByIdを使用します。

    オプション 2

    ループにUser.findById 加入一个数组,然后用 Promise.allcallback 写在 Promise.all().then()を挿入します。

    オプション 3

    状態変数を使用し、毎回チェックし、条件が満たされた場合に実行しますcallback。醜い方法なので、使用しないでください。

    返事
    0
  • 天蓬老师

    天蓬老师2017-05-16 13:25:54

    パラメータを設定し、設定を実行し、毎回コールバック判定に入る...

    返事
    0
  • 某草草

    某草草2017-05-16 13:25:54

    コールバック地獄の場合は、Promise または同様のライブラリを使用してください。

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:25:54

    リーリー

    私のソリューションは少し低いです。 。 ?

    返事
    0
  • 迷茫

    迷茫2017-05-16 13:25:54

    二階は正しいので、プロミスを使って解決してください。

    返事
    0
  • キャンセル返事