前言
作者学习笔记!
异步和同步的区别
1.基于JS是单线程语言
2.异步不会阻塞代码执行
3.同步会阻塞代码执行
异步的应用场景
网络请求,如ajax图片加载
定时任务,setTimeout setinterval
为什么有Promise?和基本使用
Promise解决了callback hell(回调地狱)
function getData(url) {
return new Promise((resolve,reject)=> {
$.ajax({
url,
success(data){
resolve(data)
},
error(err){
reject(err)
}
})
})
}
手写Promise加载一张图片:
function loadImg(src){
const p = new Promise((resolve,reject) => {
const img = document.createElement('img');
img.onload = () => {
resolve(img);
}
img.onerror = () => {
const err = new Error(`图片加载失败${
src}`)
reject(err)
}
img.src = src
});
return p
}
loadImg(url1).then(img1 => {
console.log(img1.width)
return img1 // 普通对象
}).then(img1 => {
console.log(img1.height)
return loadImg(url2) // promise 实例
}).