2016-09-22 20 views
0

假設我想創建自定義的readFile JS函數。但是,我不希望它是一個同步函數,因爲它是用來讀取大文件的,所以這會阻止我的程序向前移動一段時間。 我希望它與程序的其餘部分並行運行如何從調用堆棧中刪除一個函數並並行運行?

通過使用setTimeout(0)將調用包裝爲該函數,它只是等待調用堆棧爲空,然後我會運行它,但我不希望它:我希望它並行運行。

會有可能嗎?

+1

'readFile'已經是異步的,但你可能要使用['createReadStream'(https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options)這一點。你看過嗎? – JohnnyHK

+0

@JohnnyHK''async!= parallelism''。回調仍然需要等待執行堆棧被清空才能被調用。 – mdziekon

+0

@mdziekon不確定你在做什麼,但在讀取文件時調用'readFile'不會阻塞;文件I/O讀取發生在主線程之外。所以它是有效的並行。 'readFile'回調當然會在主線程中運行。 – JohnnyHK

回答

0

可以使用child_process模塊通過產生被並行運行到「父」一個單獨的工藝來實現並行性。這是一個「僅節點」解決方案。

你也可以嘗試WebWorkers,例如。使用此實現:webworker-threads。 WebWorkers應該可以在瀏覽器和Node.js中使用。

相關問題