最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在新线程中执行javascript函数

运维笔记admin12浏览0评论

在新线程中执行javascript函数

在新线程中执行javascript函数

问题被这样正式化。

我们可以在javascript的另一个线程中调用非纯函数并获得Promise吗?

此功能的一种可能的实现是。

function executeAsync(f: function, ...args);

1. Javascript runtime spawns 1 parallel unit (thread, coroutine, etc).

2. Javascript runtime executes the function f in parallel. (Ignore data race issue, maybe add mutex later)

3. After the parallel unit has done its job. Remove it from the pool and put callback into the callback queue.

如果仍有疑问,请发表评论。谢谢

回答如下:

JavaScript的一种特殊方法是将该函数放入executeAsync函数中,它返回一个承诺供我们以后使用。

这是一个常见的误解。承诺不会做出同步异步的事情。它们只是observe异步的[[observe的标准化方法。它们本身提供的唯一异步行为是,当您通过.then(或.catch.finally)注册处理程序时,可以确保即使不承诺,该处理程序也将被异步调用,而不是同步调用。解决。即使这样,它也是asynchronous,而不是parallel。回调发生在同一线程上,稍后。

在基于浏览器的JavaScript中真正进行并行处理的唯一方法是使用web workers,Node.js的工作人员以此为模型。如您所说,

多数

表示您必须为将在工作程序中运行的代码创建一个单独的文件,尽管it is possible to use a string。
¹“唯一的方式”-好的,技术上分开的独立选项卡可能最终在不同的线程中运行,但前提是它们是完全独立创建的。如果一个选项卡打开另一个选项卡,则它们将共享相同的线程,因为它们每个都引用另一个。
发布评论

评论列表(0)

  1. 暂无评论