1-1 进程和线程
1-2 知识点
1.单线程和异步
2.callback
3.应用场景
4.Promise
5.event-loop
6.async/await
7.微任务/宏任务
1-3 单线程和异步
1.JS是单线程语言,只能同时做一件事
2.浏览器和node.js已支持JS启动进程。
3.JS和DOM渲染公用一个线程,因为JS可修改DOM结构。
4.遇到等待(网路请求,定时任务)不能同步。
5.需要异步
6.回调callback函数形式
因为JS是单线程语言,所以遇到等待(网络请求,定时任务)不能卡顿,所以需要异步。
异步
console.log(1);
setTimeout(()=>{
console.log(2)
},1000)
console.log(3)
# 异步任务是通过callback回调函数的形式调用的,异步任务不会阻塞线程。
同步
console.log(1);
alert(2)
console.log(3)
1-4 异步应用场景
网络请求
定时任务
1-5 例子
1.同步和异步的区别
异步是基于JS单线程的语言,它不会阻塞代码的运行。而同步会阻塞代码的运行。
2.手写promis加载一张图片
function loadImage(src){
return new Promise((resolve,reject)=>{
var img = document.createElement("img");
img.src = src;
img.onload = function(){
resolve(img);
}
img.onerror = function(){
reject(new Error(`图片加载失败${src}`))
}
})
}
loadImage(src).then(res=>{
console.log(res.width)
}).catch(err=>{
console.log(err)
})
setTimeout(()=>{
console.log(1)
},1000)
setTimeout(()=>{
console.log(2)
},0)
console.log(3)