基於ES6提供的回撥函式非同步程式設計優化
同步程式設計:按照順序執行任務操作步驟 同步任務連續的,阻塞
和非同步程式設計:並行執行同一個事件迴圈裡面的全部任務 非同步任務非阻塞
非同步與同步 | |
同步任務: | |
多個任務執行時,後面任務必須等前面任務執行完之後才能執行,這樣執行的任務叫同步任務 | |
非同步任務: | |
多個任務執行時,可以同時併發執行,相互不影響。 |
回撥函式是寫在函式方法呼叫裡的函式fn(function fn1(){})
回撥函式就是一個被作為引數傳遞的函式
函式方法呼叫時執行函式體作為的引數
1. 將函式callBack作為引數傳給函式fun, 在函式fun中以形參方式進行
2. 寫法: 兩種
匿名函式形式
3. 使用: 定時器
4. 作用:
解決非同步任務問題
Promise回撥函式是有成功和失敗的函式執行體
Promise物件兩個特點:成功後解決,失敗後拒絕
new Promise(function (resolved,rejected){
if(是否操作成功){
resolve(value);
}else{
reject(error)
}
});
然後再執行他們的結果
回撥函式,
成功後執行then
失敗後抓取原因catch
promise語法
=> ES6提供的一個解決非同步程式設計問題的一個物件
簡單理解為: promise是對非同步操作的封裝,封裝非同步檔案讀寫, ajax非同步網路請求...
Promise物件代表一個非同步操作,有三種狀態:pending(進行中)、fulfilled(已成功)和rejected(已失敗)。不受外界影響,一旦改變就就不會再變執行結果
基本用法:
promise物件
=>非同步操作的結果(成功、失敗)
let promise = new Promise(function(resovle,reject){
//封裝非同步操作程式碼
//成功的結果交給resovle
if(非同步操作成功){
resolve(success)
}
//失敗的錯誤資訊交給reject
else{
reject(error)
}
})
使用promise物件
promise.then( function(success){
// success
} )
promise.catch( function(eror){
//error
} )