0

3 つのパブリック API、つまり Web サイト A、B、C に対してノンブロッキング呼び出しを行い、結果を JSON データとして Rails アプリに転送しようとしています。これが別のフォーラムの node.js で可能かどうかを尋ねたところ、可能であると思われ、誰かが node.js ステップ モジュールと非同期ライブラリを使用するこのソリューションを指摘してくれました。

Step( 
// Make 3 async calls in parallel 
  function loadStuff() { 
    getResultFromSiteA(params1, this.parallel()); 
    getResultFromSiteB(params2, this.parallel()); 
    getResultFromSiteC(params3, this.parallel()); 
  }, 
// Pass the result to Rails when you're done 
  function passOntoRails(err, resultsA, resultsB, resultsC) { 
    if (err) { throw err; } 
    passResultsToRails(resultsA, resultsB, resultsC); 
  } 
)

最近、同様の質問 hereも見つけました。答えは、私が聞いたことのないjs拡張内で利用可能な forkjoin 演算子を使用することを示唆しています。「リアクティブjs」。

したがって、私が理解できることから、これを行うには2つの方法があります。最初の方法は node.js を使用し、2 番目の方法は「リアクティブ」を使用してクライアント側から単純な複数の非同期 ajax 呼び出しを使用する方法です。

ある方法が別の方法よりも単にパフォーマンスが優れているかどうかを知りたいですか? ありがとう。意見/回答/提案をいただければ幸いです。

4

1 に答える 1

1

考え方は同じですが、最初のアプローチはサーバー (Node.js) 用で、2 番目のアプローチはブラウザー (この場合は必要ありません) 用です。

解決する必要がある N 個の非同期タスクがあり、(すべてのタスクが実行されて結果が返された後) データを Rails に送り返すことができるので、StepまたはAsyncを使用しても問題ありません。

彼らは舞台裏でどのように働いているのでしょうか? N個のタスクがあり、各タスクが解決された後、N == 0になるまでNがN-1になり、コールバック関数が目的のデータで実行されます。

Node.js でのフロー制御の詳細については、こちらをご覧ください。

http://howtonode.org/control-flow
http://howtonode.org/step-of-conductor
http://dailyjs.com/2011/11/14/popular-control-flow/

于 2011-12-28T20:56:01.397 に答える