每日一学之 关于 setTimeout和

setTimeout(function(){
	console.log('set1')
})
var p = new Promise(function(resolve,reject){
	resolve()
})
setTimeout(function(){
	console.log('set2');
	new Promise(function(resolve,reject){
		resolve()
	}).then(function(){
		console.log('promise1')
	})
})
setTimeout(function(){
	console.log('set3')
})
p.then(function(){
	console.log('promise')
})
console.log('1234')

如代码所示  最后运行结果为

1234 promise set1 set2 promise1 set3

原因如下:

1,promise是微任务,setTime是宏任务

2,js执行会先执行微任务,微任务队列空了, 再去看宏任务

 

所以:同步执行完,先去执行微,所以先promise,微任务队列空了,去执行宏,所以接着set1,set2,set2里又加入一个微任务,微任务队列有了,就先做微任务,所以在是promise1,最后在set3

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章