初探 es6 promise
生活随笔
收集整理的這篇文章主要介紹了
初探 es6 promise
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
javascript是單線程程序,所有代碼都是單線程執行。導致javascript的網絡請求都是異步執行,異步執行可以通過回調函數實現:
setTimeout(callback,1000); function callback(){console.log('----callback') //1秒鐘才能打印,回調函數處理異步執行的 };但是es6推出一種新的方法new Promise()==>對象用于表示一個異步操作的最終狀態(完成或失敗),以及其返回的值。
new Promise( function(resolve, reject) {...});resolve 表示成功的狀態 reject 表示失敗的狀態
Promise的方法有:
1.Promise.all([]).then(e=>e).catch(e=>e) ==>數組中所有傳入狀態完成才執行
2.Promise.race([]).then(e=>e).catch(e=>e) ==>數組中又一個傳入的狀態完成就執行
3.Promise.resolve({}) ==>返回一個成功的狀態
4.Promise.reject({}) ==>返回一個失敗的狀態
let a=new Promise((resolve,reject)=>{resolve(1)//或reject() }); a.then(e=>{ // resolve 返回的結果console.log(e) //1 }).catch(e=>{ //reject 返回的結果console.log(e) });如果我們有一個需求是需要所有3個接口的數據都返回了然后再進行操作,那么promise.all就可以解決,比如下面例子:
let b1=new Promise((resolve,reject)=>{resolve('b1') }); let b2=new Promise((resolve,reject)=>{resolve('b2') }) let b3=new Promise((resolve,reject)=>{resolve('b3') }); let b4=Promise.resolve('成功') //調用一個成功的狀態 Promise.all([b1,b2,b3,b4]).then(value=>{console.log(value) // 'b1', 'b2', 'b3' ] }) let b5=Promise.reject('失敗') //調用一個失敗的狀態 Promise.all([b1,b5]).then(value=>{console.log(value) }).catch(e=>{console.log(e,'------失敗') //失敗 })如果我們有一個需求是3個接口中只要有一個完成了接口請求即執行,Promise.race([])
var promise1 = new Promise(function(resolve, reject) {setTimeout(resolve, 50, 'one'); }); var promise2 = new Promise(function(resolve, reject) {setTimeout(resolve, 100, 'two'); }); Promise.race([promise1, promise2]).then(value=>{ console.log(value); //one }).catch(e=>{console.log(e) }) //promise1或者promise2誰先執行完就執行就獲取先執行的值每天進步一點,希望大家喜歡,也希望喜歡的朋友點個贊或收藏,后續繼續更新...
總結
以上是生活随笔為你收集整理的初探 es6 promise的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP中使用ActiveMQ实现消息队列
- 下一篇: nginx 如何处理请求系列1-Ngin