摘要:现在不会用都不好意思说自己是前端,为什么火起来,一句话解决了回调嵌套和执行顺序问题最重要的我感觉是解决顺序问题。
现在不会用Promise都不好意思说自己是前端,Promise为什么火起来,一句话解决了回调嵌套和执行顺序问题最重要的我感觉是解决顺序问题。
不过开始写之前我们先看看,promise怎么解决问题,怎么用。
列举一个顺序加载图片demo:
//需求 加载三张图片 img1,img2,img3,加载顺序是1,2,3 let url1 = "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3293635140,3955114282&fm=26&gp=0.jpg" let url2 = "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1019333328,1858047370&fm=26&gp=0.jpg" let url3 = "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=4226468334,723383513&fm=26&gp=0.jpg" let oImg1 = new Image() oImg1.onload = function() { console.log("img1加载完毕") let oImg2 = new Image() oImg2.onload = function() { console.log("img2加载完毕") let oImg3 = new Image() oImg3.onload = function() { console.log("img3加载完毕") console.log("全部加载完毕") } oImg3.src = url3 } oImg2.src = url2 } oImg1.src = url1
//结果没毛病
接下来我们试试promise怎么做,
function loadImg(url) { let img = new Image() img.src = url return new Promise((resolve, reject) => { img.onload = () => { console.log(url) resolve() } img.onerror = (e) => { reject(e) } }) } loadImg(url1).then(() => { return loadImg(url2) }).then(() => { return loadImg(url3) })
接下来再看看Promise.all,
//需求 加载三张图片 img1,img2 全部加载完成做一些事情 let urls = ["https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3293635140,3955114282&fm=26&gp=0.jpg", "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1019333328,1858047370&fm=26&gp=0.jpg" ] function loadImg(url) { let img = new Image() img.src = url return new Promise((resolve, reject) => { img.onload = () => { resolve(img) } img.onerror = (e) => { reject(e) } }) } function loadAll(arr) { let result = [] arr.forEach(item => { let p = loadImg(item).then((img) => { console.log(img) }) //存储当前Promise对象 console.log(p) result.push(p) }); Promise.all(result).then(() => { //全部完成 console.log("done") }).catch((err) => { // 有失败的情况 console.log(err) }); } loadAll(urls)
完成。。。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/101145.html
摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...
摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...
阅读 2291·2021-11-25 09:43
阅读 2838·2021-11-24 09:39
阅读 2906·2019-08-30 11:10
阅读 1075·2019-08-29 16:34
阅读 575·2019-08-29 13:25
阅读 3342·2019-08-29 11:21
阅读 2837·2019-08-26 11:39
阅读 2374·2019-08-26 11:34