异步解决方案良药Promise
promise
目前比较流行的异步解决方案,本质上是一个构造函数
1、状态
promise有三种状态,初始的状态都是pedding,包括成功的状态失败的状态还有等待的状态
- promise.all()所有的promise对象成功才会触发成功的状态,否则失败状态
- promise.race()任意一个子promise的状态触发后
2、出现的原因
我们来通过一个例子来说明一下异步调用的问题
let url1 = 'http://xxx.xxx.1';
$.ajax({
url:url1,
error:function (error) {},
success:function (data1) {
console.log(data1);
}
});
那当我们发出多个请求的时候就只能以嵌套的方式来解决
let url1 = 'http://xxx.xxx.1';
let url2 = 'http://xxx.xxx.2';
let url3 = 'http://xxx.xxx.3';
$.ajax({
url:url1,
error:function (error) {},
success:function (data1) {
console.log(data1);
$.ajax({
url:url2,
data:data1,
error:function (error) {},
success:function (data2) {
console.log(data2);
$.ajax({
url:url3,
data,
error:function (error) {},
success:function (data3) {
console.log(data3);
}
});
}
});
}
});
3、主要的问题
- 代码臃肿。
- 可读性差。
- 耦合度过高,可维护性差。
- 代码复用性差。
- 容易滋生 bug。
- 只能在回调里处理异常。
4 、Promise 的使用
构造函数
Promise 是一个构造函数,使用 new 操作符返回一个 promise 对象
构造函数接收一个 excutor 函数作为参数
excutor 函数有两个函数类型的参数 resolve 和 reject
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。