1.JavaScript是单线程的语言
2.异步不会阻塞代码执行
3.同步会阻塞代码执行
1.网络请求,如ajax图片加载
2.定时任务,如setTimeout
1.通过串行的方式解决了回调地狱的问题
2.手写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
}
const url1 = ‘https://img.mukewang.com/5a9fc8070001a82402060220-140-140.jpg‘
const url2 = ‘https://img3.mukewang.com/5a9fc8070001a82402060220-100-100.jpg‘
loadImg(url1).then(img1 => {
console.log(img1.width)
return img1 // 普通对象
}).then(img1 => {
console.log(img1.height)
return loadImg(url2) // promise 实例
}).then(img2 => {
console.log(img2.width)
return img2
}).then(img2 => {
console.log(img2.height)
}).catch(ex => console.error(ex))
原文:https://www.cnblogs.com/starlog/p/14736446.html