ES6的Promise -- 邏輯執行的順序
阿新 • • 發佈:2018-10-14
邏輯 -- 就會 耗時 rom let cal catch 設計 基本認識
Promise的核心價值是創建一個異步執行的過程,並給你善後的機會。
Promise對象一但創建就會立即執行,執行過程是異步的,不會對後續的邏輯造成阻塞。
直接聲明,立即執行
let promise = new Promise ( (resolve, reject) => { //執行耗時的邏輯。。。 if ( success ) { resolve(a) // pending ——> resolved 參數將傳遞給對應的回調方法 } else { reject(err) // pending ——> rejectd } } ) //後續代碼會繼續執行,而不是等待Promise內部邏輯執行完畢。 //...
放到函數裏,需要時執行
function promise () { return new Promise ( function (resolve, reject) { //執行耗時的邏輯。。。 if ( success ) { resolve(a) } else { reject(err) } } ) }
Promise內邏輯執行完畢後,調用resolve還是reject,完全要看編程者的意圖。調用resolve就會觸發Promise的then,調用reject就會觸發Promise的catch。
這就是設計的價值之處,執行完畢一個耗時操作後,給你一個條件回調的機會用於執行後續邏輯。
promise.then(
() => { console.log(‘this is success callback‘) }
).catch(
(err) => { console.log(err) }
)
更多
then() 和 catch() 都會返回一個新的Promise對象,可以鏈式調用。
promise.then(
() => { console.log(‘this is success callback‘) }
).catch(
(err) => { console.log(err) }
).then(
...
).catch(
...
)
ES6的Promise -- 邏輯執行的順序