簡述什麼是Promise及其作用,本質
什麼是Promise
所謂 Promise,就是一個物件,用來傳遞非同步操作的訊息。它代表了某個未來才會知道結果的事件(通常是一個非同步操作),並且這個事件提供統一的 API,可供進一步處理。
Promise的作用
Promise的出現主要是解決地獄回撥的問題,比如你需要結果需要請求很多個介面,這些介面的引數需要另外那個的介面返回的資料作為依賴,這樣就需要我們一層巢狀一層,但是有了Promise 我們就無需巢狀
Promise的本質
我認為Promise的本質就是分離了非同步資料獲取和業務邏輯
基本的 api
Promise.resolve()
Promise.reject()
Promise.prototype.then()
Promise.prototype.catch()
Promise.all() // 所有的完成
Promise.all([p1,p2,p3])
基礎案例
Promise 建構函式接受一個函式作為引數,該函式的兩個引數分別是 resolve 方法和 reject 方法。
var promise = new Promise(function(resolve, reject) {
if (/* 非同步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
promise.then(function(value) {
// success
}, function(value) {
// failure
});
ajax的傳統寫法
getData(method, url, successFun, failFun){
var xmlHttp = new XMLHttpRequest();
xmlHttp.open(method, url);
xmlHttp.send();
xmlHttp.onload = function () {
if (this.status == 200 ) {
successFun(this.response);
} else {
failFun(this.statusText);
}
};
xmlHttp.onerror = function () {
failFun(this.statusText);
};
}
改為 Promise寫法
getData(method, url){
return new Promise(function(resolve, reject){
var xmlHttp = new XMLHttpRequest();
xmlHttp.open(method, url);
xmlHttp.send();
xmlHttp.onload = function () {
if (this.status == 200 ) {
resolve(this.response);
} else {
reject(this.statusText);
}
};
xmlHttp.onerror = function () {
reject(this.statusText);
};
})
}
getData('get','www.xxx.com').then(successFun, failFun)
相關文章
- 簡述SpringCloud是什麼SpringGCCloud
- iOS-block本質是什麼?iOSBloC
- 反向代理的本質是什麼?
- 敏捷SAFe的本質是什麼?-shalloway敏捷
- 加密貨幣的本質是什麼?加密
- 什麼叫PMP?專案管理的本質是什麼?專案管理
- 領域模型的核心本質是什麼?模型
- 技術實力的本質是什麼?
- Java中equals與==的本質區別是什麼?Java
- 用生活案例講述:erp系統是什麼?有哪些作用?
- 簡述Helm及其優勢
- 淺談人才信用資本探索,大家信夫的本質是什麼
- 電話營銷機器人的本質是什麼?機器人
- SSL證書是什麼?有什麼作用?
- Java swing是什麼?有什麼作用?Java
- 物理防火牆是什麼?有什麼作用?防火牆
- 原生IP是什麼意思?有什麼作用?
- AI智慧與大資料的本質區別是什麼?AI大資料
- 精益生產流程最佳化的本質是什麼
- 簡述SSL證書的作用
- 什麼是JavaScript及其特點(轉)JavaScript
- JQuery中$(document)是什麼意思有什麼作用jQuery
- Linux中什麼是inode?有什麼作用?Linux
- OV SSL證書是什麼?有什麼作用
- Java三大框架是什麼,有什麼作用Java框架
- 乾淨整潔程式碼(Clean Code)的本質是什麼? - mariocervera
- 探尋軟體架構的本質,到底什麼是架構?架構
- 探尋軟體架構的本質,到底什麼是架構架構
- 多執行緒的出現是要解決什麼問題的? 本質什麼?執行緒
- 怎麼理解docker的本質是程式Docker
- 簡述為什麼通訊原理中正數的相頻是0
- 前端開發技術-promise是什麼?前端Promise
- web裡什麼是Math函式,作用是什麼Web函式
- Linux裡面kdump是什麼?有什麼作用?Linux
- 什麼是http代理伺服器,有什麼作用?HTTP伺服器
- 運維堡壘機是什麼?有什麼作用?運維
- 什麼是CDN?CDN的原理和作用是什麼?
- ERP系統是什麼?能起到什麼作用?