ほとんどのNodeJSプログラマは、NodeJSのシングルスレッドイベントループをブロックするのが悪いことを知っています。たとえば、ファイルを読むときは、fs.readFileSyncの代わりにfs.readFileを使用するほうがよいことがわかっています。私の質問は、APIによって実行される基本的なタスクが本質的に同期している場合、最初にasyn APIを作成するにはどうすればいいですか?別の言葉では、fs.readFileSyncなどのAPIを作成し、イベントループスレッドを使用して基本のタスクを実行する方法はありますか?これを行うにはNodeJS & Javascriptの外に出なければなりませんか?nodeJS(またはブラウザ)用の非同期APIの作成
1
A
答えて
1
APIによって実行される 基本タスクが本質的に同期している場合、最初にasyn APIを作成する方法はありますか? (例えば
fs.readFile()
など)は、既存の非同期操作の
- ベースにそれを:Node.jsの中
、独自の非同期操作を作成するための次の選択肢があります。主な操作自体が同期していて、node.jsで同期的にしか実行できない場合、このオプションは明らかに問題を解決しません。
setTimeout()
、setImmediate()
、またはnextTick()
を使用してコードを小さな塊に分割し、他のものがあなたの操作とインターリーブし、他のものがCPUを共有するのをブロックしないようにします。これはCPUの使用を妨げるものではありませんが、他の操作とCPUの共有を可能にします。ここでは、他の操作がCPUを共有することをブロックしないチャンク内の配列を反復する例を示します:Best way to iterate over an array without blocking the UI上記の項目#1、#2、#3はすべてJavascriptから行うことができます。項目#4には、ネイティブコードプラグイン(ネイティブスレッドへのアクセス権を持つことができる)の作成が含まれます。私は本当にゼロからfs.readFileSync()
のようなAPIを作成するにはfs.readFileSync
をAPIの作成に取り掛かるか、あなたはオプション#3のいずれかを使用する必要がありますどのように別の単語は、(やる
他のプロセスでは非同期で結果を返す)またはオプション#4(ネイティブコードプラグインを介してnode.jsに組み込まれているよりも低いレベルでOSサービスにアクセスする)
関連する問題
- 1. Uber API同期または非同期
- 2. NodeJs - 非同期/非同期/待機中
- 3. NodeJSレスポンス非同期
- 4. 非同期プログラミング(NodeJS)の使用
- 5. 非同期nodejsモジュールのエクスポート
- 6. Djangoで作成されたAPIの非同期呼び出し
- 7. nodejsで非同期に同期する
- 8. nodejs非同期モジュールの使い方は?
- 9. nodejs非同期の並列非同期内部
- 10. 非同期メソッドの作成方法は?
- 11. NodeJSクラスメソッド非同期戻り
- 12. NodeJSエクスプレス非同期問題
- 13. Nodejs非同期実行
- 14. NodeJS:非同期要求
- 15. 非同期/待機nodejs?
- 16. NodeJS mysql非同期クエリ
- 17. これはnodejsで非同期で動作しますか?
- 18. ComponentDidMountでの非同期API呼び出しの作成
- 19. NodeJS非同期ライブラリは非同期に要求を送信しません
- 20. Nodejsが同期または非同期を知っている方法
- 21. 使用Task.FromResult非同期アクションを作成するための
- 22. NodeJS非同期滝は常にnull
- 23. NodeJS変数の衝突?非同期/要求との同期
- 24. BitmapFrameを非同期で非同期メソッドで作成する
- 25. Qの約束とNodeJS非同期
- 26. nodejsで非同期とQの約束
- 27. NodeJS非同期:foreachループのアクセス結果
- 28. nodejs addon libuvでの非同期コールバック
- 29. 非同期関数の非同期ラップ関数を作成する方法は?
- 30. ASP.Net Core Web APIの非同期ビデオストリーミングは動作しません。
1が利用できない場合、最も効率的です。 NodeJSを他の言語で書かれたモジュールと統合する最良の方法は何ですか?私は財務計算を行ういくつかのマルチスレッドJavaモジュールを持っています。私は、これらのモジュールをTCP/IPサーバにパッケージングし、NodeJSアプリケーションがTCP経由でサーバにアクセスすることを考えていました。それが最善の方法だと思いますか? – ptmoy2
@ ptmoy2 - これらのモジュールをTCP/IPサーバーにパッケージングすることは確かにその1つの方法です。インターフェイス全体が簡単に理解できるTCP/IPであるため実装するのはきれいです。私たちが議論し始めていなくても、最終的にはいくつかのベンチマークを必要とするであろうことが、「最良の」ものに依存するということは、選択肢の中で「最良の」方法が何であるかを評価することは、決定する特定のシナリオの – jfriend00
@ ptmoy2 - クエリを「別のTCPサーバーに置いて、それをTCPを介して許容可能なソリューションにアクセスしています」に変更する場合、その答えは通常「はい」です。 – jfriend00