国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

JS異步那些事 三 (Promise)

wenzi / 2278人閱讀

摘要:異常處理異常處理一直是回調(diào)的難題,而提供了非常方便的方法在一次調(diào)用中,任何的環(huán)節(jié)發(fā)生,都可以在最終的中捕獲到錯(cuò)誤處理基本的小結(jié)具體的很多的用法可以參考阮一峰的入門(mén)教程,還有就是上面提到的電子書(shū)。

JS異步那些事 一 (基礎(chǔ)知識(shí))
JS異步那些事 二 (分布式事件)
JS異步那些事 三 (Promise)
JS異步那些事 四(HTML 5 Web Workers)
JS異步那些事 五 (異步腳本加載)

Promise,Deferred 對(duì)象 前戲

先來(lái)談?wù)刯query中的promise的使用,來(lái)看一個(gè)例子
原本寫(xiě)一個(gè)小動(dòng)畫(huà)我們可能是這樣的

 

但是如果我們使用promis對(duì)象的話(huà),就可以使得代碼更加簡(jiǎn)單易懂

看了上面的例子大概對(duì)promise的作用有一定的了解了吧,那就來(lái)說(shuō)說(shuō)promis的原理吧

Promise對(duì)象方法

對(duì)于DOM,動(dòng)畫(huà),ajax相關(guān)方法,都可以使用 promise 方法。調(diào)用 promise 方法,返回的是 promise 對(duì)象??梢枣?zhǔn)秸{(diào)用 promise 方法。

比如jquery中的ajax的 $.post $.get $.ajax 等方法,實(shí)際上都是默認(rèn)調(diào)用了promise方法,然后返回了一個(gè)promise對(duì)象

promise對(duì)象常見(jiàn)的方法有三個(gè) : done , fail , then 。

jquery 這里的接口方法太多了,就跟早期的事件方法綁定一樣, live , delegate , bind ,最終還是歸為 on

deferred對(duì)象方法

deferred 對(duì)象呢,也就是使用 $.Deferred() 方法,以及 $.when() 等方法創(chuàng)造出來(lái)的對(duì)象,它可以理解為一個(gè)升級(jí)版特殊的的promise對(duì)象
來(lái)看看一個(gè)例子

  

Promise構(gòu)造函數(shù)接受一個(gè)函數(shù)作為參數(shù),該函數(shù)的兩個(gè)參數(shù)分別是resolve和reject。

  

上面代碼中,timeout方法返回一個(gè)Promise實(shí)例,表示一段時(shí)間以后才會(huì)發(fā)生的結(jié)果。過(guò)了指定的時(shí)間(ms參數(shù))以后,Promise實(shí)例的狀態(tài)變?yōu)镽esolved,就會(huì)觸發(fā)then方法綁定的回調(diào)函數(shù)。

異常處理

  異常處理一直是回調(diào)的難題,而promise提供了非常方便的catch方法:在一次promise調(diào)用中,任何的環(huán)節(jié)發(fā)生reject,都可以在最終的catch中捕獲到:

Promise.resolve().then(function(){
    return loadImage(img1);
}).then(function(){
    return loadImage(img2);
}).then(function(){
    return loadImage(img3);
}).catch(function(err){
    //錯(cuò)誤處理
})
基本的 api

Promise.resolve()
Promise.reject()
Promise.prototype.then()
Promise.prototype.catch()
Promise.all()
Promise.race()

小結(jié)

具體的很多的用法可以參考阮一峰的 http://es6.ruanyifeng.com/#docs/promise 入門(mén)教程,還有就是上面提到的電子書(shū) http://liubin.org/promises-book/#introduction。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/87755.html

相關(guān)文章

  • JS異步那些 四(HTML 5 Web Workers)

    摘要:向添加一個(gè)事件監(jiān)聽(tīng)器當(dāng)傳遞消息時(shí),會(huì)執(zhí)行事件監(jiān)聽(tīng)器中的代碼。終止當(dāng)我們創(chuàng)建對(duì)象后,它會(huì)繼續(xù)監(jiān)聽(tīng)消息即使在外部腳本完成之后直到其被終止為止。 JS異步那些事 一 (基礎(chǔ)知識(shí))JS異步那些事 二 (分布式事件)JS異步那些事 三 (Promise)JS異步那些事 四(HTML 5 Web Workers)JS異步那些事 五 (異步腳本加載) 什么是 Web Worker? 當(dāng)在 HTML ...

    ZoomQuiet 評(píng)論0 收藏0
  • JS異步那些 一 (基礎(chǔ)知識(shí))

    摘要:異步那些事一基礎(chǔ)知識(shí)異步那些事二分布式事件異步那些事三異步那些事四異步那些事五異步腳本加載事件概念異步回調(diào)首先了講講中兩個(gè)方法和定義和用法方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式。功能在事件循環(huán)的下一次循環(huán)中調(diào)用回調(diào)函數(shù)。 JS異步那些事 一 (基礎(chǔ)知識(shí))JS異步那些事 二 (分布式事件)JS異步那些事 三 (Promise)JS異步那些事 四(HTML 5 Web Workers...

    李濤 評(píng)論0 收藏0
  • JS異步那些 五 (異步腳本加載)

    摘要:遵循的是異步模塊定義規(guī)范,遵循的是通用模塊定義規(guī)范。不同的腳本加載這個(gè)模塊,得到的都是同一個(gè)實(shí)例。關(guān)于異步那些事就寫(xiě)到這里了,很多地方理解的不夠深刻希望大家多多指教。 JS異步那些事 一 (基礎(chǔ)知識(shí))JS異步那些事 二 (分布式事件)JS異步那些事 三 (Promise)JS異步那些事 四(HTML 5 Web Workers)JS異步那些事 五 (異步腳本加載) 異步腳本加載 阻塞性...

    terasum 評(píng)論0 收藏0
  • 2018 淺談前端面試那些

    摘要:聲明的變量不得改變值,這意味著,一旦聲明變量,就必須立即初始化,不能留到以后賦值。 雖然今年沒(méi)有換工作的打算 但為了跟上時(shí)代的腳步 還是忍不住整理了一份最新前端知識(shí)點(diǎn) 知識(shí)點(diǎn)匯總 1.HTML HTML5新特性,語(yǔ)義化瀏覽器的標(biāo)準(zhǔn)模式和怪異模式xhtml和html的區(qū)別使用data-的好處meta標(biāo)簽canvasHTML廢棄的標(biāo)簽IE6 bug,和一些定位寫(xiě)法css js放置位置和原因...

    LiuRhoRamen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<