共计 862 个字符,预计需要花费 3 分钟才能阅读完成。
异步解决方案良药 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
正文完