setTimeout()函数也是一个非阻塞的异步函数
后端的fs.readFile()函数也是一个非阻塞的异步函数
es6中的promise对象的then函数也是一个非阻塞的异步函数
任务的队列分类 和 事件循环
任务指的就是js代码中的运行的代码
fn()代表了fn任务的运行 脚本也是一个任务 计时器的运行也是一个任务 promise也是
任务分为同步的任务 和 异步的任务
//同步任务
function fn(){}
var a = new Array()
var b=fn()
//异步任务
setTimeout(fn,1000)
p1.then(fn)
console.log(123)
异步任务的队列优先级:异步宏任务先执行, 然后再执行异步微任务
事件循环 任务开启后:内部执行的时候可能会有新的任务
宏任务:脚本就是一个宏任务
脚本运行 执行第一个宏任务:1.先执行同步任务 2.添加新的宏任务到队列中 添加新的异步微任务3.在执行异步微任务
setTimeout(function(){console.log(4)},0);
new Promise(function(resolve){
console.log(1)
for( var i=0 ; i<10000 ; i++ ){
i==9999 && resolve()
}
console.log(2)
}).then(function(){
console.log(5)
});
console.log(3);
打印 1,2,3,5,4