findById の後にコールバックを実行したいのですが、コールバックに配置できません。そうしないと、複数回実行されてしまいます。どうすればいいですか?
漂亮男人2017-05-16 13:25:54
ソフトウェアはサービス業です、サービス意識を持たなければなりません... コードマップには問題はなく、はっきりと見ることができますが、回答者がコードを変更したい場合は、再度コードを入力する必要があります...
すでに es6 構文を使用しているようですので、正しい解決策は Promise でなければなりません。これは自分で Promies にカプセル化できます
リーリーもちろん、Bluebird が提供するツール機能を使用して Promise をカプセル化することもできます
ここでは複数の非同期呼び出しを実行しているため、それらをまとめて返したい場合は、複数の結果が存在する必要があることに注意してください。したがって、Promise.all
后面 then()
のコールバックに注目してください。
es5 を使用したい場合は、es6 を作成してから Babel を使用することをお勧めします。ただし、Node 7.6 以降はすでに es2017 の一部の機能をサポートしているため、実際にはこの問題について心配する必要はありません。本当に必要な場合は、findById
コールバックでカウントするメソッドを使用して、拡大の移動をカウントアップします (コールバックを呼び出します)。
我想大声告诉你2017-05-16 13:25:54
オプション 1
async/await
。这样就可以按照同步方式使用 User.findById
を使用します。
オプション 2
ループにUser.findById
加入一个数组,然后用 Promise.all
,callback
写在 Promise.all().then()
を挿入します。
オプション 3
状態変数を使用し、毎回チェックし、条件が満たされた場合に実行しますcallback
。醜い方法なので、使用しないでください。