問題タブ [when-js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
82 参照

javascript - この約束を処理する別の方法はありますか?

ここに少しのコーヒースクリプトがありますが、javascriptで自由に答えてください:

他の場所では、ビューがコレクションのイベントをリッスンしていaddます…</p>

モデルがサーバーとの通信を完了していない場合がありました。そのため、モデルには がなくid、このコードは必要な処理を実行できませんでした。saveそのため、 when.js ライブラリを使用して promise でラップしました (ここwhenにマップされてWhenいます)。

今、すべてが世界とハンキードーリーです。私が疑問に思っているのは、thenメソッドに を取得する方法があるかどうかです。それが本当に_addOne待っているビットだからです。コレクション自体は、半分焼かれたモデルが追加されてもかまいません。

誰かが私を示したり、正しい方向に向けたりすることができれば、とても感謝しています.

0 投票する
1 に答える
375 参照

javascript - mocha.js テストのタイムアウト後も続く「ゾンビの約束」

Mocha.js を使用したテスト セットアップと、テスト内の多くの約束を使用しています。テストは DOM の設定に依存し、テスト間で DOM はクリアされます。ただし、テストの実行が遅くなり、タイムアウトになることがあります。この場合、それらの promise は引き続き実行されますが、次のテストの前に DOM がクリアされるため、promise は次のテストに誤ってエラーをスローする可能性があります。テストの間にすべての未解決の約束をキャンセルまたは破棄する方法はありますか? when.js の promise を使用しています。

0 投票する
1 に答える
1047 参照

javascript - 非同期で作成されたプロミスを同期する

私は小さなnodejsプログラムに取り組んでおり、プログラムのすべての非同期操作がいつ完了するかを知るのにいくつかの問題があります。

今のところ、プログラムは次の手順を実行します。

1/ いくつかのパラメーターを使用してプロセスを生成します。このプロセスは、標準出力にデータを出力します。

2/ プロセス stdout の「データ」イベントをリッスンし、何かが出力されるたびに、プログラムはデータを使用して関数 (「プロセス」と呼びます) を呼び出します。

3/ このプロセス関数は、最終的にデータを mongo データベースに挿入し、amqp サーバーにメッセージを送信します。

3/ データがなくなると、amqp と mongo データベースへの接続がまだ有効であるため、プログラムはアイドル状態になります。接続を閉じるには、すべての作業がいつ完了したかを知る必要があります。

それで、約束を利用するためにwhen.jsを使用しようとしましたが、私が達成しようとしていることをうまく機能させることはできません。

「プロセス」関数が promise を返すようにしました。これは、mongodb の挿入と amqp メッセージの送信が完了すると解決されます。私のプログラムでは、いつすべてが解決されたかを知るために when.all() を呼び出すことができるというすべての約束を受け取る配列を作成しています。

しかし、生成されたプロセスが stdout ストリームにデータを出力しているときに約束を非同期に作成しているため、 when.all() の呼び出しは空の配列で行われ、すぐに解決されるようです。

これは、私が達成していることを示すコードサンプルです。

ご想像のとおり、このプログラムの出力は次のようになります。

このコード サンプルでコンソール メッセージを予想どおりの順序で出力する方法はありますか (最初の行が最後に出力されます)。

ありがとう。

0 投票する
1 に答える
1659 参照

node.js - node.js mongoose.js メモリリーク?

bower パッケージ検索サイト (すべてオープン ソース) を作成していて、壁にぶつかりました。メモリ リークが発生しており (または発生していると思われます)、なぜそこにあるのか正直わかりません。

ダウンロードして自分で実行することもできますが、簡単なヒントが大いに役立ちます。

ここでこの関数呼び出しに絞り込みましたhttps://github.com/kamilbiela/bowereggs-backend/blob/master/main.js#L14 ( nest.fetchAndSave() ) すべてここで定義されています: https:// github.com/kamilbiela/bowereggs-backend/blob/master/lib/nest.js

基本的に、インターネット、Json.parse からパッケージ リストをダウンロードし、それをデータベースに挿入します。

この関数を数回実行すると、実行ごとに 30 MB のメモリが作成されますが、これはガベージ コレクターによって消去されません。また、これは私の最初の「本物の」node.js プロジェクトであることにも注意してください。

0 投票する
2 に答える
214 参照

javascript - whenライブラリを使用してjavascriptの約束を理解する

私は、非同期プログラミングとプロミスの使用について頭を悩ませようとしてきました。それらを理解するのを助けるために、いくつかの簡単なネストされたコードを書きましたが、問題が発生しました。

コードは次のとおりです: http://pastebin.com/hBtk9vER ライブラリのインストール時に必ずインストールしてください (npm install)

私の問題は、解決後console.log(string)にあると予想していたときに未定義であることです。興味深いことに、タイムアウトを削除すると、期待どおりに機能します。タイムアウトが終了する前に関数がコードを実行している理由を説明できる人はいますか。"Hello World"promiseRead()promisepromiseRead()

とても有難い

0 投票する
1 に答える
1148 参照

javascript - When Promise を使用したコールバック ピラミッド

前の関数がタスクを完了したときにのみ、次々に実行したい関数が 3 つあります。これには When Promise ライブラリを使用します。

これが本来あるべき姿ですか?私は約束を使用してコールバックとその「破滅のピラミッド」を簡単に回避できるという印象を受けましたか、それとも間違って使用していますか?

0 投票する
2 に答える
7475 参照

javascript - when.map で catch と finally を使用する方法

when.map関数を使用してデータを処理したいと考えています。データが処理された後、いくつかのクリーンアップを行う必要があります (たとえば、現在使用されているデータベース接続を解放して接続プールに戻します)。

catchandfinally を使用する私のアプローチの問題はfinally、最初のマッピングが発生したときに呼び出され、reject他のマッピングがまだ進行中であることです。

では、保存のクリーンアップを実行できるように、すべてのマッピングの約束が完了するまで待つにはどうすればよいでしょうか。

出力

環境情報:

  • whenjs: v3.1.0
  • ノード: v0.10.26
0 投票する
0 に答える
220 参照

angularjs - ジャスミンを使用してディレクティブをテストしているときに約束が解決されない

現在、promise を使用するカスタム ディレクティブをテストしています。

ディレクティブのコード セグメントの最初の部分の構造は次のとおりです。

私が書いたジャスミンのテスト仕様は、次のような構造になっています。

このテストの実行中、ディレクティブ コードのこのセクションに制御が入りません。

[ただし、コントロールはコードの前の行まで入ります。]

この問題の考えられる理由は、promise が解決されていないことです。また、エラーや例外はスローされません。仕様の「when」プロミスを解決するための提案 - コントロールがディレクティブの次のセクションに入るようにします。