1.写出下列代码的执行结果:
new Promise((resolve) => {
console.log('1')
resolve()
console.log('2')
}).then(() => {
console.log('3')
})
setTimeout(() => {
console.log('4')
})
console.log('5')
所以答案为:1 2 5 3 4
js在处理异步操作时利用的是事件循环机制。事件循环机制处理顺序,同步操作<-异步操作(微任务<-宏任务)
由于javascript是单线程任务所以主线程只能同时处理一个任务,所以把异步的事件放在同步的事件处理完成之后再来依次处理。
异步事件又包括微任务和宏任务:
宏任务和微任务关系:微任务执行完后再执行宏任务
微任务操作:1:Promise,2:MutationObserver
宏任务操作:1:setTimeout,2:setInterval,3:I/O操作
所以上面代码执行顺序为:
同步:console.log(1)->console.log(2)->console.log(5);
异步:(微任务)console.log(3)->(宏任务)console.log(4);
所以答案为:1 2 5 3 4
请列举几个HTML5语义化标签,并说说语义化有什么优点?
语义化标签:
<title>:页面主体内容。
<hn>:h1~h6,分级标题,<h1> 与 <title> 协调有利于搜索引擎优化。
<ul>:无序列表。