一、promise入門
1. promise物件是什麼
**函式的另一種原生實現,比之前**函式的寫法機構清晰,功能強大,
2.以前**這麼寫
functiona(fn)
else
},1000)}//
呼叫a(function
(m))
3.用promise 寫**
functiona()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實現
functionpm(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函式表示
functionpm(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. 寫法
functionpm(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的屬性的行為都會觸發執行時錯誤...