promise學(xué)習(xí)

1. 什么是promise

promise抽象異步處理對象以及對其進(jìn)行各種操作的組件.js中處理異步一般都是通過回調(diào)如下:
getAsync("fileA.txt", function(error, result){ if(error){// 取得失敗時(shí)的處理 throw error; } // 取得成功時(shí)的處理 });
Promise則是把類似的異步處理對象和處理規(guī)則進(jìn)行規(guī)范化,并按照統(tǒng)一的接口來寫,不按規(guī)范寫就會出錯(cuò).promise實(shí)現(xiàn)上訴異步處理:
var pro = new promise(function(resolve,reject){ if(error){ reject(); }else{ resolve(); } }); pro.then(function(){ //when sucess happens do something }).catch(function(){ //when error happens do something })

2. 兼容性

我們要用一個(gè)東西肯定先考慮兼容啊,promise是es6里邊的,所以兼容還是個(gè)問題,不過我們在此可以引用使之兼容的Polyfill類庫如YUI的ypromise或es6-promise

3. promise的用法
  • 創(chuàng)建promise對象:我們通過new Promise(fn)來創(chuàng)建一個(gè)promise對象,fn接受兩個(gè)參數(shù) resolve和reject,當(dāng)異步處理正常時(shí)調(diào)用resolve否則調(diào)用reject 下邊是一個(gè)創(chuàng)建xhr的promise例子:
    function getURL(URL) { return new Promise(function (resolve, reject) { var req = new XMLHttpRequest(); req.open('GET', URL, true); req.onload = function () { if (req.status === 200) { resolve(req.responseText); } else { reject(new Error(req.statusText)); } }; req.onerror = function () { reject(new Error(req.statusText)); }; req.send(); }); } var URL = "http://httpbin.org/get"; getURL(URL).then(function onFulfilled(value){ console.log(value); }).catch(function onRejected(error){ console.error(error); }); Promise.resolve(value),快速創(chuàng)建promise對象,是new Promise(function(resolve){
    resolve(value);
    })`
    的語法糖。Promise.reject(value)用法同上
  • 在Promise里可以將任意個(gè)方法連在一起作為一個(gè)方法鏈
    aPromise.then(function taskA(value){ // task A }).then(function taskB(vaue){ // task B }).catch(function onRejected(error){ console.log(error); });
    我們可以通過Promise方法鏈方式來編寫能以taskA → task B 這種流程進(jìn)行處理的邏輯了。

先這樣吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文適用的讀者 本文寫給有一定Promise使用經(jīng)驗(yàn)的人,如果你還沒有使用過Promise,這篇文章可能不適合你,...
    HZ充電大喵閱讀 7,467評論 6 19
  • //本文內(nèi)容起初摘抄于 阮一峰 作者的譯文,用于記錄和學(xué)習(xí),建議觀者移步于原文 概念: 所謂的Promise,...
    曾經(jīng)過往閱讀 1,328評論 0 7
  • JavaScript Promise 學(xué)習(xí)記錄(一) 本文首先介紹了promise的三種狀態(tài)及生成不同狀態(tài)prom...
    kkdev閱讀 924評論 0 0
  • promise 是什么 Promise 對象用于一個(gè)異步操作的最終完成(或失敗)及其結(jié)果值的表示。(簡單說就是處理...
    shadow123閱讀 374評論 0 2
  • 最近在與感冒進(jìn)行著艱難的斗爭,一直沒有更新內(nèi)容。本來是想分享一下關(guān)于互聯(lián)網(wǎng)上的“90-9-1”法則的一些認(rèn)識的,不...
    J又二分之一閱讀 528評論 2 1

友情鏈接更多精彩內(nèi)容