深入理解es6的promise

2022-09-17 03:24:14 字數 2031 閱讀 9686

一、promise入門

1. promise物件是什麼

**函式的另一種原生實現,比之前**函式的寫法機構清晰,功能強大,

2.以前**這麼寫

function

a(fn)

else

},1000)}//

呼叫a(function

(m))

3.用promise 寫**

function

a()else

},1000)

})}//

呼叫a().then(function

(data),

function

(err))

4.多層**實現

//

函式封裝

function

fn(n,callback),1000)

}function

fn2(m,callback),800)

}function

fn3(h,callback),600)}//

多層**呼叫

fn(1, function

(n))

})});

可見(1)中多層**寫起來很亂,不利於維護,下面用promise實現

function

pm(n)

else

},1000)

})}function

pm2(n)

else

},1000)

})}function

pm3(n)

else

},1000)

})}//

呼叫pm(1).then(function

(data)).then(

function

(data)).then(

function

(data))

用promise呼叫的寫法更加直觀

二、generator

1.generator函式

(1)非同步程式設計思想來寫同步**

(2)遍歷器生成函式

(3)狀態機,封裝了多個內部狀態。

2.形式

function*abc()

//呼叫

var h =abc();

h.next();

h.next();//

h.next();//

3.把promise用generator函式表示

function

pm(n),1000)

})}function

pm2(n),800)

})}function

pm3(n),600)

})}function*gpm()

let p =gpm();

p.next().value.then(

function

()) })

})

在呼叫的時候用generator函式;**更加同步化

三、async/await

1. async/await是什麼

(1)非同步操作的終極解決方案

2. 寫法

function

pm(n),1000)

})}function

pm2(n),800)

})}function

pm3(n),600)

})}async

function

p()p()

四、總結

不管用then還是用generator 還是用async,都保證你寫的function 的返回值是乙個**promise**物件

深入理解ES6 解構

解構時一種打破資料結構,將其拆分為更小部分的過程。解構在實際開發中經常會應用到物件和陣列中。關於解構的基本用法,請參考 es6 變數的宣告及解構賦值 const node let node 對已經宣告的變數賦值 const node let a,b node const obj let obj co...

《深入理解ES6》 Promise非同步程式設計

每個promise都會經歷乙個短暫的生命週期 先是處於進行中 pending 的狀態,此時操作尚未完成,所以它也是未處理 unsettled 的 一旦非同步操作執行結束,promise則變為已處理 settled 的狀態。已處理的狀態又分為以下兩種 所有promise都有then 方法,它接受兩個引...

深入理解ES6之《解構》

如果使用var let const解析宣告變數,則必須提供初始化程式 也就是等號右側的值 以下語句有語法錯誤 var let const解構賦值表示式 也就是右側的表示式 如果為null或undefined會導致程式丟擲錯誤,因為任何嘗試讀取null或undefined的屬性的行為都會觸發執行時錯誤...