JavaScript - ノードの非同期の問題
大家讲道理
大家讲道理 2017-05-16 13:23:54
0
6
372

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(6)
漂亮男人

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

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

リーリー

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

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

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

いいねを押す +0
我想大声告诉你

オプション 1

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

オプション 2

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

オプション 3

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

いいねを押す +0
Peter_Zhu

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

いいねを押す +0
某草草

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

いいねを押す +0
巴扎黑

リーリー

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

いいねを押す +0
迷茫

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート