摘要:現(xiàn)在不會用都不好意思說自己是前端,為什么火起來,一句話解決了回調(diào)嵌套和執(zhí)行順序問題最重要的我感覺是解決順序問題。
現(xiàn)在不會用Promise都不好意思說自己是前端,Promise為什么火起來,一句話解決了回調(diào)嵌套和執(zhí)行順序問題最重要的我感覺是解決順序問題。
不過開始寫之前我們先看看,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
//結(jié)果沒毛病
接下來我們試試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) }) //存儲當(dāng)前Promise對象 console.log(p) result.push(p) }); Promise.all(result).then(() => { //全部完成 console.log("done") }).catch((err) => { // 有失敗的情況 console.log(err) }); } loadAll(urls)
完成。。。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/101145.html
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個最重要的技術(shù)點常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實現(xiàn)的大排序算法一怪對象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術(shù)點 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...
閱讀 2362·2021-11-25 09:43
閱讀 2870·2021-11-24 09:39
閱讀 2936·2019-08-30 11:10
閱讀 1143·2019-08-29 16:34
閱讀 606·2019-08-29 13:25
閱讀 3367·2019-08-29 11:21
閱讀 2869·2019-08-26 11:39
閱讀 2401·2019-08-26 11:34