手冲今日豆
¥42 · 同步先改数量,再清微任务,最后才轮到 setTimeout。
购物车0
工程与栈 · 开发基础
网页的脚本语言按事件循环跑:同步代码先改页面,再清空微任务,最后才取宏任务——setTimeout(0) 不会立刻执行。
下面就是会响应点击的商品卡:默认购物车是 0。点「立刻改数量」,数字变成 1;再试把更新丢进 setTimeout(0),失败也写在同一张卡上。
¥42 · 同步先改数量,再清微任务,最后才轮到 setTimeout。
未加入 · 数量 0:数量长在商品卡上。
原因:同步代码会立刻改页面。下一步:点「立刻改数量」,或试「丢进 setTimeout(0)」看数量会不会卡住。
购物车数字已经演示了顺序,这里只命名三层。
回调、延迟、异步混在一起时,用事件循环顺序判断;纯同步从上到下即可。
目标都是让数量变成 1,只改更新写在哪。
页面立刻显示 1,顺序可预测。结果长在购物车数字上。
以为 0 毫秒就是马上,数量还停在 0。失败写在商品卡上。
console.log("A"); setTimeout(() => console.log("B"), 0); Promise.resolve().then(() => console.log("C")); console.log("D"); 输出顺序是?
术语的技术定义和行为以这些一手或权威资料为准。
和本知识点经常一起出现的概念。