什么是promise:
所谓 promise ,就是一个对象,用来传递异步操作的消息它代表了某个未来才会知道结果的事件(通常是一个异步操作)
,并且这个事件提供统一的 API , 可供进一步处理。
promise 的作用:
promise 的出现主要解决地域回调的问题,比如你要请求很多接口,这些接口的参数需要另外的接口返回的数据作为依赖
,这样就需要我们一层嵌套一层,promise就帮我们解决了这个问题。
基本的 API
promise.resolve()
promise.reject()
promise.prototype.then()
promise.prototype.catch()
promise.all() // 完成所有
promise.all([a,b,c])
基础案例
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)