最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在新线程中执行javascript函数

IT培训 admin 5浏览 0评论

在新线程中执行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。
¹“唯一的方式”-好的,技术上分开的独立选项卡可能最终在不同的线程中运行,但前提是它们是完全独立创建的。如果一个选项卡打开另一个选项卡,则它们将共享相同的线程,因为它们每个都引用另一个。

在新线程中执行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. 暂无评论