什么是promise
promise是抽象异步处理对象以及对其进行各种操作的组件
基于回调函数的异步处理(统一参数使用规则)
1
2
3
4
5
6
getAsync('file.txt',function(error,result){
if(error){
throw error;
}
});
基于promise的异步处理(统一接口)
1 | var promise =getAsyncPromise("file.txt"); |
除promise对象规定的方法(then,catch…)以外的方法都是不可以使用的
promise三个状态:pending、fulfilled、rejected
用new Promise 方法创建promise对象
1
2
3
4
5
var promise = new Promise(function(resolve, reject) {
// 异步处理
// 处理结束后、调用resolve 或 reject
});
用.then 或 .catch 添加promise对象的处理函数 (.catch 只是 promise.then(undefined, onRejected) 的别名而已)
1
2
promise.then(onFulfilled, onRejected)
resolve(成功)时
onFulfilled 会被调用
reject(失败)时
onRejected 会被调用
onFulfilled 、onRejected 两个都为可选参数。
Promise四个静态方法:resolve、reject、all、race
Promise.reject(error) 是和 Promise.resolve(value) 类似的静态方法,是 new Promise() 方法的快捷方式。
1
2
3
4var promise = Promise.resolve($.ajax('/json/comment.json'));// => promise对象
promise.then(function(value){
console.log(value);
});1
2
3new Promise(function(resolve,reject){
reject(new Error("出错了"));
});Promise.all接收一个promise对象数组作为参数,当这个数组里的所有promise对象全部变为resolve或reject状态的时候,它才会去调用 .then 方法
Promise.race接收一个promise对象数组为参数, 只要有一个promise对象进入FulFilled 或者 Rejected 状态的话,就会调用 .then 方法