Promise详解(一) ----基础用法
什么是Promise
Promise是由社區(qū)最早提出并實現(xiàn)的,后加入到es6規(guī)范中。為更好處理javascript異步問題,用于解決其多次異步回掉嵌套問題。下面先嘗試下promise的基礎(chǔ)用法吧。
創(chuàng)建promise實例
var promise = new Promise(function(resolve,reject){if(flag){resolve("成功了");}else{reject("失敗了")}}) 復(fù)制代碼解析上述代碼:
promise.then方法
promise.then(function(data){console.log(data) //==>成功了 data指的是resolve傳過來的值return 100;},function(e){console.log(e) //==>失敗了 e指的是reject傳過來的值}).then(function(data){ // ==> 鏈?zhǔn)秸{(diào)用console.log(data) // 100},function(e){}) 復(fù)制代碼解析上述代碼:
promise.catch(function(e){...})
等同于promise.then(null,function(e){...}),若前面then中沒有錯誤處理,則統(tǒng)一進(jìn)入此方法
let promise = new Promise(function(resolve,reject){...})promise.catch(function(data){}) 復(fù)制代碼promise.finally(function(){})
不管 Promise 對象最后狀態(tài)如何,都會執(zhí)行的操作
let promise = new Promise(function(resolve,reject){...})promise.then(...).finally(function(){}) 復(fù)制代碼let p = Promise.all([p1,p2...])
p1,p2指promise實例,在p1,p2...所有狀態(tài)都為成功時,p的狀態(tài)才為成功,任何一個失敗,即為失敗
Promise.all([p1,p2,p3]]).then(function (lists) {// ... lists是一個數(shù)組,其結(jié)果和[p1,p2,p3]的返回值一一對應(yīng) }).catch(function(reason){// ... }); 復(fù)制代碼let p = Promise.race([p1,p2...])
p1,p2指promise實例,其任何一個狀態(tài)改變即會進(jìn)入p的then方法中去
Promise.race([p1,p2,p3]]).then(function (data) {// ... data為先返回結(jié)果的promise的返回值 }).catch(function(reason){// ... }); 復(fù)制代碼let p = Promise.resolve(param) // Promise.reject(param)
兩個方法類似,分別會進(jìn)入后期的then中的正確/異常處理邏輯中去。其參數(shù)param會在內(nèi)部判斷,然后進(jìn)入不同處理。以resolve方法為例如下
轉(zhuǎn)載于:https://juejin.im/post/5aa64634f265da23a334dee8
總結(jié)
以上是生活随笔為你收集整理的Promise详解(一) ----基础用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue封装一个简单轻量的上传文件组件
- 下一篇: 第3章 StringBuilder类