成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

ES6 promise

jerry / 2079人閱讀

摘要:基本概念是中新增的異步編程解決方案,體現(xiàn)在代碼中它是一個對象,可以通過構(gòu)造函數(shù)來實(shí)例化。只要期中有一個被,的狀態(tài)就變成,此時(shí)第一個被的實(shí)例的返回值,會傳遞給的回調(diào)函數(shù)。

Promise

基本概念:
Promise:是ES6中新增的異步編程解決方案,體現(xiàn)在代碼中它是一個對象,可以通過Promise 構(gòu)造函數(shù)來實(shí)例化。

new Promise(cb)
三種狀態(tài):Pending、 Resolved、Rejected

兩個原型方法:
Promise.prototype.then()
Promise.prototype.catch()

兩個常用的靜態(tài)方法:
Promise.all() // 可以將多個Promise實(shí)例包裝成一個新的Promise實(shí)例

當(dāng)所有Promise實(shí)例的狀態(tài)都變成resolved,Promise.all的狀態(tài)才會變成resolved,此時(shí)返回值組成一個數(shù)組,傳遞給then中的resolve函數(shù)。

只要期中有一個被rejected,Promise.all的狀態(tài)就變成rejected,此時(shí)第一個被rejected的實(shí)例的返回值,會傳遞給p的回調(diào)函數(shù)。

Promise.resolve()

Pending ====> Resolved(已完成)
Pending ====> Rejected(已失敗)

console.log(1)
const p = new Promise(function(resolve, reject){
    const img = new Image();
    img.src = "";
    img.onload = function(){
        resolve(this);
    }
    img.onerror = function(){
        reject(new Error("圖片加載失敗"));
    }
})

p.then(function(img){
   document.body.appendChild(img);
}, function(err){
    console.log(err)
}) //第一個參數(shù)是執(zhí)行成功的,第二個函數(shù)是執(zhí)行失?。ㄒ话悴煌扑]第二個參數(shù),采用catch)
console.log(2)
p.catch(function(err){
   console.log(err)
})
 // 1 2 error(異步,不影響后面加載)
 
 
var imgs = ["a.jpg", "b.jpg", "c.jpg"]
function loadImg(url){
    const p = new Promise(function(resolve, reject){
        const img = new Image();
        img.src = "";
        img.onload = function(){
            resolve(this);
        }
        img.onerror = function(){
            reject(new Error("圖片加載失敗"));
        }
    })
    return p;
}

const allDone = Promise.all([loadImg(imgs[0])], [loadImg(imgs[1])], [loadImg(imgs[2])]);

allDone.then(function(data){
   console.log(data) // data 就是一組數(shù)組
}).catch(function(err){
   console.log(err) //
})



Promise.resolve()三種用法
//參數(shù)是Promise實(shí)例,將不做任何修改、原封不動的返回這個實(shí)例

Promise.resolve(loadImg(imgs[0]).then(function(data){
  console.log(data) // 
})

//將對象轉(zhuǎn)為Promise對象,然后就立即執(zhí)行thenable對象的then方法

 Promise.resolve({
   then(resolve, reject){
       const img = new Image();
       img.src = imgs[0];
       img.onload = function (){
           resolve(this)
       }
   }
 }).then(function(data){
     
 })
 

//參數(shù)是一個基本數(shù)據(jù)類型或者不傳參數(shù) ,那么返回一個狀態(tài)為resolved的Promise對象

  Promise.resolve("abc").then(function(str){
   console.log(str); //abc
  })
  
  const p = Promise.resolve();
  console.log(p)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/94224.html

相關(guān)文章

  • ES6-7

    摘要:的翻譯文檔由的維護(hù)很多人說,阮老師已經(jīng)有一本關(guān)于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評論0 收藏0
  • 通過 ES6 Promise 和 jQuery Deferred 的異同學(xué)習(xí) Promise

    摘要:和和都有和,但是略有不同。實(shí)際上返回的是一個對象。和添加的回調(diào),添加的回調(diào)。所以在調(diào)用成功的情況下執(zhí)行添加的回調(diào),調(diào)用失敗時(shí)執(zhí)行添加的回調(diào)。,產(chǎn)生對象并,產(chǎn)生對象并,然后繼續(xù)處理,的語法糖,和的差不多但不同。 Deferred 和 Promise ES6 和 jQuery 都有 Deffered 和 Promise,但是略有不同。不過它們的作用可以簡單的用兩句話來描述 Deffere...

    Yujiaao 評論0 收藏0
  • es6 - Promise

    摘要:所謂異步編程中的異步是相對于同步的概念的。是一系列異步編程規(guī)范的統(tǒng)稱。如果中的回調(diào)函數(shù)返回一個值,那么返回的將會成為接受狀態(tài),并且將返回的值作為接受狀態(tài)的回調(diào)函數(shù)的參數(shù)值。參考介紹基礎(chǔ)篇深入理解與異步編程。 es6 promise與異步編程 對于一些還不具備大量編程經(jīng)驗(yàn)的朋友來說,promise可能是es6比較難以掌握的點(diǎn)。首先是很多名詞,比如Promises,es6 Promise,...

    wemallshop 評論0 收藏0
  • JavaScript 異步

    摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。寫一個符合規(guī)范并可配合使用的寫一個符合規(guī)范并可配合使用的理解的工作原理采用回調(diào)函數(shù)來處理異步編程。 JavaScript怎么使用循環(huán)代替(異步)遞歸 問題描述 在開發(fā)過程中,遇到一個需求:在系統(tǒng)初始化時(shí)通過http獲取一個第三方服務(wù)器端的列表,第三方服務(wù)器提供了一個接口,可通過...

    tuniutech 評論0 收藏0
  • 淺談ES6原生Promise

    摘要:如果有錯誤,則到的第二個回調(diào)函數(shù)中,對錯誤進(jìn)行處理。假設(shè)第一個的第一個回調(diào)沒有返回一個對象,那么第二個的調(diào)用者還是原來的對象,只不過其的值變成了第一個中第一個回調(diào)函數(shù)的返回值。 ES6標(biāo)準(zhǔn)出爐之前,一個幽靈,回調(diào)的幽靈,游蕩在JavaScript世界。 正所謂: 世界本沒有回調(diào),寫的人多了,也就有了})})})})})。 Promise的興起,是因?yàn)楫惒椒椒ㄕ{(diào)用中,往往會出現(xiàn)回調(diào)函數(shù)一...

    yedf 評論0 收藏0
  • ES6Promise:要優(yōu)雅,也要浪漫

    摘要:就算改變已經(jīng)發(fā)生了,即使再對對象添加回調(diào)函數(shù),也會立即得到這個結(jié)果。方法接收個參數(shù),第一個參數(shù)是狀態(tài)的回調(diào)函數(shù),第二個參數(shù)可選是狀態(tài)的回調(diào)函數(shù)。簡單來講,就是能把原來的回調(diào)寫法分離出來,在異步操作執(zhí)行完后,用鏈?zhǔn)秸{(diào)用的方式執(zhí)行回調(diào)函數(shù)。 在ECMAScript 6標(biāo)準(zhǔn)中,Promise被正式列為規(guī)范,Promise,字面意思就是許諾,承諾,嘿,聽著是不是很浪漫的說?我們來探究一下這個浪...

    weizx 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<