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