Promise() 物件
了解promise物件之前我們要先了解回呼地獄和如何解決回呼地獄
- 回呼地獄: 在使用JavaScript時,為了實作某些邏輯經常會寫出層層嵌套的回呼函式,如果嵌套過多,會極大影響代碼可讀性和邏輯,這種情況也被成為回呼地獄
- 通過 Promise() 解決回呼地獄
Promise() 基本實作流程(執行機制)
Promise物件是一個建構式,用來生成Promise實體,
promise 的作用:Promise物件,可以將異步操作以同步操作的流程表達出來,避免了層層嵌套的回呼函式,此外,Promise物件提供統一的介面,使得控制異步操作更加容易,
promise 接受一個函式作為引數: 函式有兩個引數: resolve(成功) reject(失敗); 他們兩個是函式,由 JavaScript 引擎提供,不用自己部署,
Resolve函式的作用是,將Promise物件的狀態從“未完成”變為“成功”(即從 pending 變為 resolved),在異步操作成功時呼叫,并將異步操作的結果,作為引數傳遞出去;
Reject函式的作用是,將Promise物件的狀態從“未完成”變為“失敗”(即從 pending 變為 rejected),在異步操作失敗時呼叫,并將異步操作報出的錯誤,作為引數傳遞出去,
promise 的狀態: 有三種狀態:pending(進行中)、fulfilled(已成功)和rejected(已失敗),
Promise物件的狀態改變,只有兩種可能:從pending變為fulfilled和從pending變為rejected, 當處于pending狀態時,無法得知目前進展到哪一個階段
Promise() ()基本代碼邏輯
let flag = true;
function fun(){
return new Promise( (resolve, reject) =>{
if(flag){
// resolve() 代表成功, resolve() 呼叫執行 then() 中的回呼函式
// resolve()
// 引數 result 就是傳遞的資料 需要通過then() 中回呼函式接受
resolve(result)
}else{
// reject() 代表失敗, reject() 呼叫執行 catch() 中的回呼函式
// reject()
// 引數 error 就是傳遞的錯誤資訊 需要通過catch() 中回呼函式接受
reject(error)
}
})
}
// fun().then(() => {}).catch(() => {})
fun().then((data) => {}).catch((err) => {})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/245235.html
標籤:其他
