2017-12-31 299 views
0

短い状況報告:Node.js "require" - 重複した実行を避ける

私は2つのスクリプトを使って、多くのAPIコールを交換しています。 一部の呼び出し(主に残高チェック)は、両方のスクリプトで同じです。

API呼び出しを制限するために、これらの重複呼び出しをすべて第3のスクリプトに入れました。このスクリプトはそのデータをファイルに入れます。

スクリプト1と2の両方がそのファイルから読み込み、すべて正常に動作しています。

しかし、 はさらにFileWrite関数のオーバーヘッドを削減し、3秒毎に読み取るために、私は今、スクリプト3を必要とし、バランスの配列は、その道に沿って渡され、「必要」

スクリプトの1を試しました。

私が期待していなかったことは、スクリプト3を別に実行する必要がないということです。 スクリプト1を開始すると、スクリプト3は明らかにバックグラウンドで実行されている(とスクリプト1に沿っはconsole.logメッセージを渡し)さ

そして今の質問に取得する:私は、同じスクリプト2に必要置く場合 、うスクリプト3は効果的に2回実行されますか?それは3番目のスクリプトの目的を全滅させるでしょう... バランス配列は、スクリプト1と2からの入力がまったくないインターバル内で実行されている関数の1つです。 輸出のみ。

+0

はいこれは2回実行されます。もしあなたが関連しているならば、あなたはただ一つのスクリプトですべてを動かすことはできません。 – SunriseM

+0

両方のスクリプトは3つの交換と通信します。交換は1つだけです。 – Wannes

+0

どちらのスクリプトも700行以上あり、それらをマージすると狂ってしまうでしょう: – Wannes

答えて

0

初めてファイルrequireをファイルとして使用すると、同期して評価されます。正常に完了した場合(スローしない場合)は、module.exportsの値がキャッシュされます。

また、requireそのファイルを使用すると、キャッシュされたエクスポート値が取得されます。

あなたがここで望むように聞こえるのは、それぞれのファイルを持つことです。module.exports = function something() { /* put your actual code here */ } - その機能を必要とすることができます。必要なときにのみ(複数回、必要な場合)呼び出すことができます。

+0

いいえ、実際には他のスクリプト内から呼び出されるmodule.exportsや関数はありません。スクリプト3はスタンドアロンのポーリングスクリプトとして作成されました。基本的に3秒ごとに同じAPI呼び出しを行います。各ループでAPI呼び出しから数値の配列を集め、exports.name1 = Array1を介してそれらの3つの配列をエクスポートします。 – Wannes

+0

代わりに、スタンドアロンスクリプトをスタンドアロンの関数に変換することをお勧めします。これにより、コードをいつ実行するかをより詳細に制御できます。 – LJHarb

関連する問題