gpt4 book ai didi

JavaScript 执行 block 和消息队列

转载 作者:行者123 更新时间:2023-12-01 03:49:17 24 4
gpt4 key购买 nike

是否有可能在循环执行 block 之后调用延迟为 0 毫秒的超时函数 setTimeout(function, 0),或者包含的功能 block 始终先完成吗?

setTimeout(function(){ //something in here }, 0);

function myFunction() {
// do something
// loop block

// could timeout = 0 be scheduled to execute here?

// do more things
}

myFunction()

在我的上下文(Angular 2)中,了解 Angular 的 ApplicationRef.tick() 来检查数据绑定(bind)/组件更改是否可能在我完成之前调用会很有趣在嵌套循环中操作双向绑定(bind)属性?

函数调用和所有后续子函数调用是否相当于消息队列中的单个项目,还是分解为每个执行 block 都是消息队列中的单个项目?因此 setTimeout(..., 0) 可能会进入队列中的执行 block 之间?

最佳答案

不,这是不可能的。您可以将 javaScript 视为“一个线程”——在任何时间点都只有一份代码在运行。任何超时都将在当前流程完成后执行。此外,在执行 javascript 页面时变得无响应——您无法执行任何操作。

一些演示:

setTimeout(function() { console.log(1) }); 
var d = new Date();
var i = 0; for(; i < 1e9; i++) {}
console.log(i);
console.log('Passed ' + (new Date() - d));

>> 1000000000
>> Passed ~2000
>> 1

关于JavaScript 执行 block 和消息队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43350544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com