问题标签 [executioncontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
688 浏览

scala - scala.concurrent.Future.onSuccess 在不同ExecutorService上的执行时间

我想控制 ExecutionContext 中的线程数。所以我创建了一个 ThreadPoolExecutor 的实例,然后从中创建了 ExecutionContext。

我创建了一些 Futures 并在它们上附加了 onSuccess 回调。我希望每个未来工作完成时都会调用每个 onSuccess 回调。但我发现所有 onSuccess 回调都是同时执行的。

上面的结果不是同时打印的。但是当我使用 ForkJoinPool 而不是 ThreadPoolExecutor 时,这个问题得到了缓解。我是否滥用了 ExecutionContext 和 Future?

编辑:我发现当线程数小于期货数时会出现问题。所以我编辑了上面的代码来重现问题并打印执行时间。

我认为即使线程数很少,也应该按时调用未来的回调......

0 投票
1 回答
59 浏览

javascript - 比较javascript中的执行上下文堆栈

我正在使用严格模式。我想比较是否在同一个执行上下文堆栈中对同一个函数进行了两次调用。

例如 1:如果两个独立的事件处理程序 A 和 B 被触发并且它们每个都调用 C,那么我想知道对 C 的调用是在不同的执行上下文堆栈中进行的。

例如 2:如果函数 A 调用了 C 而调用了 B 又调用了 C,那么我想确定对 C 的两次调用是在同一个执行上下文堆栈中进行的。

我需要这种行为,因为我在 Javascript 中实现应用程序事务,并且我希望能够支持嵌套事务。当我们编写严格的代码时,我正在寻找不使用参数、被调用者、调用者对象的解决方案。

还要记住,A、B、C 都可以是异步的,并且 C 在调用时不会立即运行完成。这就是为什么使用下面描述的计数器在异步场景中不起作用的原因

C是异步的。使用计数器,这意味着两个独立的事件处理程序调用 C,它们都在有机会减少计数器之前增加计数器

0 投票
0 回答
48 浏览

javascript - JavaScript 在线程语言中的执行 VS 应用程序上下文?

我试图在内存中的实现方面可视化哪些线程。我没有 com-sci 背景,因此对于任何基本的理解错误,我深表歉意(请指出此类错误)。

我对进程的理解是内存中的一个“盒装”区域,其中包括几个“子”盒装线程。这是我见过的一个有用的 SO 答案:进程和线程之间有什么区别?对此。

我知道 JavaScript 进程只包含一个线程,但您仍然拥有这些“盒装”内存空间 - 即封装了一些能够访问父范围的内存的执行上下文。

例如,我对application context传递给 Android 活动的理解是,它是进程内存环境的“快照”(我会想象进程的所有线程和部分线程),以便进程可以在新盒子。

如果以上是正确的,那么从概念上讲,JavaScript 执行上下文和线程语言上下文中的应用程序上下文是可比的,因为它们都指的是作为进一步工作环境的内存空间,这是否正确。

0 投票
0 回答
67 浏览

javascript - JavaScript 执行上下文的实现是堆空间的一个例子吗?

从概念上讲,存储在内存中以在 JavaScript 中创建执行上下文的数据需求是否被视为堆空间的示例?

我的理解是,随着帧被添加到 JavaScript 的调用堆栈中,执行上下文是在堆空间中创建的。

这个对吗?

0 投票
1 回答
185 浏览

javascript - JavaScript 中的执行上下文和对象

JS 中有一些关于对象、执行上下文的东西我不明白。

当我们创建一个对象时,它会创建一个执行上下文吗?因为在调用函数时会创建执行上下文。如果不是,那么该对象就像实际执行上下文中的其他变量一样?

谢谢你。

0 投票
2 回答
50 浏览

javascript - 什么时候创建参数对象?

这篇博文中,它说参数对象是在创建执行上下文期间创建并分配其值的,在执行任何代码之前。然而,在 Kyle Simpson 的YDKJS一书中 ,有一个看起来像这样的例子,

他说,在创建执行上下文和代码执行期间,将值“2”分配给参数“a”发生。
我一直在试图找到一个两者都有意义但它们似乎完全相反的主张的场景。参数对象是什么时候准确创建的?先感谢您!

0 投票
0 回答
367 浏览

javascript - 如何使用事件参数更改对象文字函数中“this”的上下文

我有以下代码,它是一个具有两个函数和一个属性的对象文字。

我的问题是,当函数greetSomeone被调用时,它的上下文不是人,而是一个事件(例如 jQuery 或 DOM 事件),因此上下文更改为被触发this.getName但未找到的事件。

那么,我如何调用this.getName()内部greetSomeone来正确执行呢?

我试过getName.call(person)了,但没有用。

0 投票
2 回答
157 浏览

javascript - Javascript - 作用域链

我阅读了许多关于 javascript 作用域链的文章,我认为我对它有一个不错的理解。然而,一个非常简单的练习让我意识到我根本不理解它。

我创建了以下代码。

此代码给出了参考错误。但是,我认为它仍然会打印出 2。我的理由如下:

  • foo 和 bar 的函数声明。
  • Foo 被执行,这会创建一个新的执行上下文。Foo 的内部属性 [[Scope] 设置为全局。
  • var b 被提升。
  • var b 被赋值为 2。
  • bar 在 foo 执行上下文中执行。因此,我假设 bar 函数的内部属性 [[Scope]] 将设置为 foo。
  • b 未在函数 bar 中定义,因此查找范围链并找到值 b = 2。
  • 控制台.log(2);

我的推理是基于我理解函数 X 的 [[Scope]] 内部属性设置为在函数 X 执行时正在运行的执行上下文。不基于函数 X 的声明位置。

0 投票
1 回答
302 浏览

scala - Scala确定全局ExecutionContext是否完成了所有任务

我正在为异步执行一些非 io 任务并使用回调的服务编写一些测试。我需要每次测试都等到所有回调完成。是否可以确定

完成所有任务了吗?

0 投票
2 回答
33 浏览

javascript - Javascript提升 - 无法理解这一点

想学Js,不明白为什么DOM元素得不到值:

所以我创建了一个类构造函数及其原型对象,但最后一行 -document.getElementById("id").innerHTML = emy.loc;没有被执行(除非我把它放在文件的顶部)。这是为什么?

片段:

https://jsfiddle.net/awj6mf1b/