onclick()问题
<div class="outer">
<div class="inner">
</div>
</div>
js代码:
$(".outer").on("click", function(){
console.log("outer");
Promise.resolve().then(function() {
console.log('promise3');
}).then(function() {
console.log('promise4');
});
setTimeout(()=>console.log("222"),0);
})
$(".inner").on("click", function(){
console.log("inner");
Promise.resolve().then(function() {
console.log('promise1');
}).then(function() {
console.log('promise2');
});
setTimeout(()=>console.log("111"),0);
})
发现在点击时输出为:
inner
promise1
promise2
outer
promise3
promise4
111
222
这表明所inner触发的点击事件和执行outer的点击事件 是异步的。因为它们中间执行了job
执行这条语句:
$(".inner").trigger("click");
输出:
inner
outer
promise1
promise3
promise2
promise4
111
222
这表明是点击事件以及冒泡行为都是同步触发的。
所以 js执行点击事件冒泡行为是同步的,鼠标点击冒泡行为是异步的,即一个一个添加到task队列上的?是这样吗?
正在回答
同学你好,非常抱歉之前的回复可能有些问题,同学理解的是对的。
1、click点击是异步的,有宏任务和微任务,按照顺序执行宏任务,遇到微任务需要执行完毕才能执行宏任务。
2、trigger触发是同步的,需要先执行完主线程的内容,然后再执行队列中的。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星