Javascript 使时间密集型函数异步
使时间密集型函数(如图像处理)异步运行以允许其他代码运行或允许所述函数的多个实例并行运行的最佳方法是什么?(可以是特定于节点的)例如,如fs.readFile()或fetch()(XHR)。因为Node.js以单线程方式运行Javascript(一次只能执行一段Javascript),如果计算密集型图像处理当前都是Javascript代码,然后,与其他Javascript并行运行图像处理的选项如下:Javascript 使时间密集型函数异步,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,使时间密集型函数(如图像处理)异步运行以允许其他代码运行或允许所述函数的多个实例并行运行的最佳方法是什么?(可以是特定于节点的)例如,如fs.readFile()或fetch()(XHR)。因为Node.js以单线程方式运行Javascript(一次只能执行一段Javascript),如果计算密集型图像处理当前都是Javascript代码,然后,与其他Javascript并行运行图像处理的选项如下: 启动一个或多个工作进程(可以运行node.js代码或任何其他您想要的程序),并在单独的进程中执行
谢谢。请看一下。如果你想要节点特定,用C++作为ADDON模块,并用回调或返回承诺的签名来公开它,并使用V8中的LIBUV模式来执行它作为线程任务。这将使其异步,而不会由于间歇地向事件循环屈服而损失任何效率。或者,您可以将其保持同步,并将其作为
子进程运行,以将其放在单独的线程中。谢谢。因此,从本质上讲,Web Workers是浏览器解决方案,而child_process/cluster是节点解决方案,对吗?至于ADDON模块,我不太了解C++或其他任何母语,只是JS和Python,所以我更愿意使用我所知道的(至少有点),至少现在。@ Drjk,这与您对方法3的评论一致。此外,为了引入用于异步性的状态机,不可避免地进行去优化,从而严重限制了性能,并在这两者之间重复地向其他事件屈服#2将是长期的“理想”方法,而#1似乎是易于实现和性能之间的良好平衡。@PatrickRoberts-不。这一评论被放在了错误的问题上。对不起,我会在这里删除它。