V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zhanglintc  ›  全部回复第 4 页 / 共 26 页
回复总数  511
1  2  3  4  5  6  7  8  9  10 ... 26  
2023-01-14 23:57:11 +08:00
回复了 zhanglintc 创建的主题 问与答 下面这段 js 代码的输出应该是什么?
@MossFox https://stackoverflow.com/a/34691484/4156036

看起来是给定的 delay 到期后,可能会有一个“事件”或者“中断”发生,然后 JS 引擎会立即处理它(也就是放到微任务)。但是这个暂时没找到资料来证明。

但是如果说 JS 引擎内部有类似的“事件”机制的话,我感觉都能解释通了。

上面的例子:
setTimeout(function(){console.log(1)}, 10)
setTimeout(function(){console.log(2)}, 0)

第一个 10 毫秒后触发事件,第二个立即触发事件,那么自然第二个先入队列。
到时候执行微任务的时候自然就是第二个先打印了。
2023-01-14 21:07:23 +08:00
回复了 zhanglintc 创建的主题 问与答 下面这段 js 代码的输出应该是什么?
@MossFox #11 这个字有点多,链接更多,要花点时间再理解理解。

不过我倒是试了下,如果改成这样的话

```
setTimeout(function(){console.log(1)}, 10) // 队列位置 1
sleep();
setTimeout(function(){console.log(2)}, 0) // 队列位置
```

是可以输出 1 ,2 的:
sleep done
1
2
2023-01-14 17:24:00 +08:00
回复了 zhanglintc 创建的主题 问与答 下面这段 js 代码的输出应该是什么?
@MossFox @tutou @LancerXu 各位再帮忙看下:

// 这个大概耗时 1.7 秒
function sleep() {
i=0
// do a heavy job
for (let j = 0; j < 1e9; j++) {
i++;
}
console.log("sleep done")
return 3
}

setTimeout(function(){console.log(1)}, 10) // 队列位置 1
setTimeout(function(){console.log(2)}, 0) // 队列位置 2
sleep();

这里认为塞入微队列的顺序应该是书写顺序吧,那么就是 1 在 2 之前。
然后 sleep 是一个耗时操作,测试大概在 1700 毫秒左右。
那么宏队列结束后调用微队列,此时先出栈 1 ,且应该已经超过 10 毫秒,那么 1 可以直接输出。
但是为什么还是先输出的 2 呢?

还是说 setTimeout 的计时是在进入微队列循环操作后才开始考虑计时器的?

期望输出:
sleep done
1
2

实际输出:
sleep done
2
1
2023-01-13 20:26:11 +08:00
回复了 zhanglintc 创建的主题 问与答 下面这段 js 代码的输出应该是什么?
先看了 #8 @MossFox 回复的文章,再看 #3 @tutou 和 #7 @LancerXu 的回复就全理解了。
2023-01-12 00:21:09 +08:00
回复了 huhexian 创建的主题 分享发现 送大家一个小小的新年礼物,定制微信红包封面
已领,谢谢
2023-01-11 00:02:53 +08:00
回复了 naonaogoogle 创建的主题 问与答 怎么设置 google 搜索的结果跟使用的节点地区无关
google.com/ncr 印象中好使又简单。
2023-01-10 23:58:47 +08:00
回复了 jqtmviyu 创建的主题 macOS 请问如何删除根目录下的"opt"文件夹
确实,这玩意儿没必要删吧
2023-01-05 17:02:00 +08:00
回复了 13936 创建的主题 程序员 十分悲剧,学了十多年的英语大部份发音错的离谱
是的,我非常赞同你的说法和理解你的感受。

很多单词我仔细再看了音标以后,发现多少年了,错得离谱。
2023-01-05 12:16:45 +08:00
回复了 glei 创建的主题 问与答 家庭问题,帮出出主意吧
感觉也就只能听听你的吐槽。没啥可以建议的。
2023-01-05 11:37:20 +08:00
回复了 gowl 创建的主题 奇思妙想 看恐怖电影的时候,只要把声音调小,就不会被吓到
即使没看恐怖电影,只要听了水琴的声音也会被吓到。
2023-01-05 10:44:42 +08:00
回复了 xtx 创建的主题 问与答 招商银行借钱年化 3.72%,可以冲么?
可以借啊。我之前在工行借过类似的。
sql ultimate
@723X #2 直接给他打 1w 块钱
2023-01-04 00:00:59 +08:00
回复了 leek120303 创建的主题 反馈 希望 V2EX 的评论区可以考虑添加评论指向功能。
现在基本都靠插件实现了。楼主自己搜个插件弄吧。Livid 估计不会搞的。
2022-12-30 00:00:02 +08:00
回复了 qwwuyu 创建的主题 问与答 第四针加强针可以打吗?
1. 可以打。
2. 但是感觉出去容易感染,为了打个针感染了还不如不打。
2022-12-29 23:33:52 +08:00
回复了 unt 创建的主题 程序员 有没有这么一个后端服务项目
我猜你想要的是不是这个:

https://i.imgur.com/IDX9Qqr.png
2022-12-29 11:47:56 +08:00
回复了 Yancey 创建的主题 汽车 路口车多时候怎么变道啊,新手慌得一批,怕撞到别人
多说无用。
大家都是这么过来的,开多了,被逼逼多了自然就会了。
2022-12-28 22:28:08 +08:00
回复了 Mark24 创建的主题 Ruby Ruby 3.2.0 发布
如果能火,我倒是很开心
1  2  3  4  5  6  7  8  9  10 ... 26  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1622 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 52ms · UTC 16:56 · PVG 00:56 · LAX 09:56 · JFK 12:56
Developed with CodeLauncher
♥ Do have faith in what you're doing.