// 模拟发送网络请求
const query = (interval) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(interval);
}, interval);
});
};
/*
并行 同时发送多个请求 等待所有请求都成功之后再继续往下执行
Promise.all 等待所有promise实例都是成功态才执行then的回调函数
*/
/*
Promise.all([query(1000),query(2000),query(3000)]).then(result => {
console.log(result); // 经过三秒之后输出 [1000, 2000, 3000]
})
*/
/*
串行 多个请求之间是有依赖的 第一个请求发送成功 才能发第二个请求
第二个请求发送成功才能发送第三个请求 以此类推....
*/
/*
// 方案1 Promise
query(1000).then(value => {
console.log('第一个请求成功',value);
return query(2000)
}).then(value => {
console.log('第二个请求成功',value);
})
*/
// 真实项目当中是用async/await来实现
(async function () {
let value;
try {
// 模拟其中一个请求失败
value = await Promise.reject('xxx');
console.log("第一个请求成功", value);
} catch (err) {
console.log(err);
}
value = await query(2000);
console.log("第二个请求成功", value);
value = await query(3000);
console.log("第三个请求成功", value);
})();
模拟ajax的并行和串行
![](https://img-home.csdnimg.cn/images/20240711042549.png)