Promise
三种状态:
pending进行中fulfilled已成功rejected已失败。Promise对象会出现两种状态的改变。pending进行中 =>fulfilled已成功 、pending进行中 =>rejected已失败。Promise.prototype.then()方法可接受两个回调函数作为参数
.then(resolveCallback, rejectCallback);
## 实例
const promise = new Promise((resolve, reject) => {
// ... some code
if (/*** 异步操作的判断 ***/) {
resolve('成功');
} else {
reject('失败');
}
});
promise.then((value) => {
// success
// resolve 返回的数据
// value => 成功
}, (error) => {
// failure
// reject 返回的数据
// error => 失败
});
Promise.prototype.catch();方法是.then(null, rejection)的别名【第二个参数】。指定错误的回调函数。.then((value) => { // success }).catch((error) => { // error })Promise.prototype.finally();不管是成功还是错误,都是执行这个操作。```
.finally(() => {
// 执行完请求的操作 // 该操作无关请求成功与否})
Promise.all();将多个Promise实例,包装成为一个新的promise实例。``` const promise = Promise.all(p1, p2, p3); // p1, p2, p3 都是Promise实例 // 只有p1, p2, p3的状态都为fulfilled时, promise的状态才会变成fulfilled。promise的返回值时p1, p2, p3返回值组成的数组。
const p1 = new Promise((resolve, reject) => {
resolve('成功p1') reject('失败p1')})
const p2 = new Promise((resolve, reject) => {
resolve('成功p2') reject('失败p2')})
Promise.all([p1, p2]).then((value) => {
console.log(value)}, (error) => {
console.log(error)})
// ['成功1', '成功2'];
使用说明 == 仿 axios
const axios = { get (path) { return new Promise((resolve, reject) => { if (value >1) { resolve('成功') } else { reject('失败') } }) } } axios.get(1).then((value) => { console.log(value) }, (error) => { console.log(error) })