2016-09-22 65 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中使用。

相关问题