問題タブ [node-async]

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 投票する
2 に答える
282 参照

javascript - 非同期並列バグ?

ここでは、Async.js への引数を持つ関数の配列を作成しようとしています。

この配列は、関数配列を Async に渡す直前に、MakeRequest のループ内で設定されることになっている RunRequest のインスタンスで構成されています。

request[i] のリクエストは RunRequest に渡すと問題ありませんが、RunRequest 関数内では未定義ですか?

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

node.js - Expressjs を使用した非同期ウォーターフォールのエラー処理

async.waterfallでスローされたときにexpressjsがエラーを処理しない理由がわかりません

/error を取得すると、expressjs はクラッシュ サーバーなしで適切なエラーを出力しますが、/asyncerror を取得すると、サーバー クラッシュで標準出力に出力されます。

ありがとうございます。

0 投票する
3 に答える
1173 参照

javascript - Async.js シリーズのすべての関数が実行されるわけではありません

Async.jsを使用して一連の非同期関数を起動しようとしています。以下は私のコードです。最初の 2 つの関数のみが実行されます。シリーズの 3 番目と 4 番目の関数は実行されません。考えられる機能を最も基本的なものに単純化しました。しかし、それでも実行しません。誰かが私が間違ったことを教えてもらえますか?

編集 --- 以下の回答で示唆されているように、最初の 2 つの適切な関数を作成しました。ただし、一連の関数の最初の関数のみが実行されます。関数 2 ~ 4 は呼び出されません。このコードには他に何か問題があるに違いないと思います。

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

node.js - Node.js非同期ウォーターフォールにパラメーターを渡す

async の初期関数にいくつかのパラメーターを渡す必要がありますwaterfall()。提案された方法 https://github.com/caolan/async/issues/14は、ExpressJS関数からの応答を渡す必要があるため、機能しません。

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

xml - nodejs async を使用して大きな xml ファイルを処理する (関係あり)

大きな XML ファイル (サイズは約 25 MB) を処理し、データをドキュメントに整理して MongoDB にインポートする必要があります。

問題は、xml ドキュメントに約 5 ~ 6 種類の要素があり、それぞれに約 10,000 行あることです。

タイプ a の xml ノードを 1 つフェッチした後、タイプ b、c、d などの対応する要素をフェッチする必要があります。

ノードでやろうとしていること:

  1. タイプ a のすべての行をフェッチします。
  2. 行ごとに、xpath を使用して対応する関連行を見つけ、ドキュメントを作成します。
  3. mongodb にドキュメントを挿入する

タイプ a の行が 10k 行ある場合、2 番目のステップは 10k 回実行されます。物事が永遠にかからないように、これを並行して実行しようとしています。したがって、async.forEach は完璧なソリューションのように見えました。

async.forEach(rowsA,fetchA);

私の fetchrelations 関数はこのようなものです

これを実行しようとすると、コード内の console.log は 1.5 秒ごとに約 1 回しか実行されず、期待どおりにすべての行に対して並列に実行されません。過去 2 時間、頭を悩ませ、これを理解しようとしてきましたが、何が間違っているのかわかりません。

私はノードにあまり慣れていないので、しばらくお待ちください。

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

javascript - JavascriptAsync.jsParallelがsocket.ioで機能しない

次のコードブロックがあります。

module.rpcは、を介してサーバーから必要なデータをフェッチする関数ですsocket.io。ここで、最後の関数(async.parallelの2番目の引数)は、指定された3つの関数がコールバックされた後にのみ呼び出されることになっています。ただし、テンプレート(EJS)のレンダリング中に、にアクセスしようとするとgroups.data、次のエラーが発生することがあります。

コードは私には完全に問題ないように見えますが、たまにしか機能しません。基になるコードを変更せずにページを繰り返しリロードし、成功率は約20%でした。ここで物事がうまくいかない理由はまったくわかりません。私が推測できるのは、その変数の割り当てが遅れているということだけです。そのため、を使用してレンダリングを遅らせようとしwindow.setTimeoutましたが、役に立ちませんでした。なぜこうなった?どうすれば修正できますか?

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

javascript - node.js + asyncモジュールで同期コールバックから同期ループを作る

人気のある node.js モジュールasyncには、コレクションと制御フローの関数が含まれており、並列または直列で動作できるバージョンもあります。

しかし、その中には、直列に動作するループを構築する方法が見つかりません。

私はこの疑似コードと同じことをしようとしています:

  • getLine()すべての呼び出しを並行して呼び出したい場合は、 を使用できますasync.whilst
  • fororwhileループのようなものを作成するのではなく、配列を反復処理したい場合は、 を使用できますasync.eachSeries

seriesコレクションの繰り返しではなく、制御フローで動作を取得するには何を使用できますか?

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

javascript - node.js: プログラムが予期せず終了するか、単にハングする

ネットワーク操作を実行するモジュールを node.js に作成しました。このモジュール (以下の変数) を使用する小さなスクリプトを作成しましたcheck。次のようになります。

ここで興味深いのは次のとおりです。このコードがテストの一部として実行されるとmocha、テストは期待どおりに終了します。ログ ステートメントが表示され、プロセスが終了します。

コードがスタンドアロン ノード スクリプトとして実行されると、ログ ステートメントが出力されますが、プロセスはハングするだけです。

デバッグしようとして、 を使用してプログラムを開始し、 を--debug-brk使用するとnode-inspector、早期に終了します! process.on 'exit'と呼ばれていることが分かります。モジュール内のいくつかの内部コールバックがまだ呼び出されていない間に終了します。したがって、上記のログ ステートメントも出力されません。

私は今立ち往生しており、なぜこれが起こっているのかわかりません。誰かが同様の行動を見たことがありますか?

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

javascript - async.series および JavaScript 変数

私の理解には根本的な断絶があると思います。コールバックについて読んでいて、以下が機能しない理由を探しましたが、間違った場所を探している可能性があります。次のコードがあります。

console.log の「テスト」が出力されていないようで、コードのさまざまな繰り返しを何度も試しましたが、最も内側のループ (users.push ユーザー) の外に出ると、できません。ユーザーの値を取得します。空の配列 [] になってしまいます。誰かが洞察を持っているか、おそらく私の考えのどこが間違っているかを指摘できますか? ありがとうございました。

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

node.js - async.map 関数がネイティブの fs.stat 関数で機能するのはなぜですか?

ドキュメントに従って、2 番目の引数は次のとおりです。

iterator(item, callback) - 配列内の各アイテムに適用する関数。

罰金。

イテレータには、エラー (null の場合もある) と変換されたアイテムで完了すると呼び出されるコールバック (err、変換済み) が渡されます。

それはこれに準拠していないと思いますし、fs.statこれはうまくいかないと思います。

次のようになります。