ES6-Promise

promisepromise

promise就是一個對象,存儲着異步函數返回的結果 

promise有三種狀態:異步

1.pending(進行中)函數

2.fulfilled(已完成)更多則用resolvedui

3.rejected(已失敗)spa

這三種狀態,何時展示,就看異步函數返回的結果.code

promise對象是一個構造函數regexp

例子:對象

new Promise((resolve,reject)=>{ console.log('Promise','test'); //reject(); // test1 resolve(); //test2 }).then(() => { console.log('resolved','test') }).catch(() => { console.log('hi','test') }) ////test1 output: Promise test hi test ///test2 output: Promise test resolved test

reslove 表明成功以後執行的行數,調用reslove()則就執行then方法.回調函數

.then能夠有多個方法,將依次執行.同步

調用reject(),則就執行失敗後回調的方法.catch裏面的方法

例子2:

在一個函數中返回一個promise對象,當調用該函數時,去判斷是否執行哪一個回調函數

function doSomething(index) {
	return new Promise((resolve,reject) => { console.log('promise created!') if( index > 5){ resolve(); } else reject(); }) } doSomething(2).then((value) =>{ console.log('我大於5哦~') }).catch((value) => { console.log('我小於5哦~') }) /// output promise created! 我小於5哦~

Ps:若是在doSomething函數中不去返回promise對象,就在調用改函數時用then方法,是會報錯!!!!

執行順序: promise建立後就會執行,當全部的同步執行結束後纔會執行then等回調函數. 

一個promise對象的結果做爲參數給另外一個promise對象

const p1 = new Promise(function (resolve,reject) { reject(); }) const p2 = new Promise(function(resolve,reject) { resolve(p1); }) p1.then(() => { console.log('p1 resolve') }).catch(()=> { console.log('p1 reject') }) p2.then(() =>{ console.log('p2 resolve') }).catch(() => { console.log('p2 reject') }) /// output p1 reject p2 reject

即p1的結果會影響到p2

promise的finally()方法

promise
.then( result => {...}) .catch( error => {...}) .finally(() => {...})
finally方法就是不管promise對象的最後狀態如何,都會執行的方法.
相關文章
相關標籤/搜索