获得徽章 0
下了一周末的雨,感觉周末和没过一样
2
端午加了三天班,挑战连上12天班
30
JYM,使用ECHARTS的getDataURL方法导出图表为PNG,报错:Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.有大佬知道是为啥不,图表里有已发布CDN的图片
评论
赞了这篇沸点
小宝数学考了100分,等我下班回去发现金红包[呲牙]
2
赞了这篇沸点
jym,都把🐟摸起来[坏笑]
7
赞了这篇沸点
这周单休人是不是真的要连上9天班啊,怎么过啊[大哭]
331
#新人报道# 下午好啊jym
评论
赞了这篇沸点
大家觉得这个像不像卡普?
阿飞OnePiece于2024-04-25 09:24发布的图片
7
赞了这篇沸点
发现网上很多关于事件循环和宏/微任务的说法是有问题的,文章就不重复写了,澄清一下细节把。

所谓宏任务,是由游览器生成的;所谓微任务,是由JS引擎生成的。生成宿主不同,任务的级别也就不同。类似于操作系统设计了【线程】的概念,但是应用程序设计了【协程】的概念。

宏/微任务其实可以举例为:你在银行柜台办业务,排了一个长队,你们都是【宏任务】,但是轮到你时,你一下子办理了很多事情,比如【转账、办新卡和办信用卡】,这3个事情就是你产生的【微任务】,只有帮你办理完这些,后面那些人才有机会办理业务【宏任务】。

强调一下,有些人可能会以为,只有异步任务才是宏任务,其实并不是如此。比如,script代码、DOM解析这些。

对于游览器的主线程而言,所有任务执行时,最终都是【同步】的,不管你是【延迟】,还是【不延迟】的,最终只有在可以执行时,才会放到【消息队列】,由主线程拉取到执行栈。

在遇到定时器延迟、网络请求时,都是其他线程负责去处理了,消息队列里面这个时候没有它们,只有这些事情异步完成后,才会进入到【消息队列】,然后被拉取执行。

所以,不要把事件循环里面的宏任务和异步与否混在一起了,宏/微代表的只是任务级别,异步/同步代表的是执行时机,对于事件循环这个【死循环】来说,只有现在能执行时,才会进入它的法眼,管你触发是异步还是同步呢,没完成时,不要找我【进消息队列】。

最后,附带一个学习链接:time.geekbang.org。

PS:没有所谓定时器线程,想想也对,主线程完全可以给延迟任务打个时间标记,然后主线程每次根据当前时间进行时间对比检查就是了,和前端localStorage加缓存时间设置一个道理。
展开
戡玉于2024-04-25 11:12发布的图片
评论
赞了这篇沸点
点赞超50 今天提桶裸辞,真的干不下去了[流泪]
143
赞了这篇沸点
点赞一百, 明天裸辞, 干不下去了
41
赞了这篇沸点
额,突然发现今天33岁生日[蛋糕][蛋糕][蛋糕],目前就我自己知道吧 感觉 好惨啊[泪奔]
50
赞了这篇沸点
周五了,好累的一周
1