学习到了promise做个笔记
1.传统的异步操作
setTimeout(function(){
console.log('第一次请求');
setTimeout(function(){
console.log('第二次请求');
setTimeout(function() {
console.log('第三次请求');
},3000)
},2000)
},1000);
嵌套书写,可读性很差,如果嵌套层数过多就是进入到了传说的回调地狱。
2.使用promise改进
// resolve和reject是两个函数,前者代表promise成功执行后在then()中的下一步操作,后者表示失败后catch()的下一步操作
new Promise((resolve,reject) => {
setTimeout(function(){
console.log('第一次请求');
resolve();
},1000)
}).then(function(){
return new Promise((resolve,reject) => {
setTimeout(function(){
console.log('第二次请求');
resolve();
},2000)
}).then(function(){
return new Promise((resolve,reject) => {
setTimeout(function(){
console.log('第三次请求');
},3000)
})
})
}).catch(() => {
console.log('执行错误');
});
promise将嵌套变为了顺序代码,但上面代码看起来比原来还要复杂
对上面代码进行优化
function print(delay,msg){
return new Promise((resolve,reject) => {
setTimeout(() => {
resolve();
console.log(msg);
},delay);
})
};
print(1000,'第一次请求').then(() => {
return print(2000,'第二次请求');
}).then(() => {
print(3000,'第三次请求')
});
3.异步函数 async和await
async function test(){
await print(1000,'第一次请求');
await print(2000,'第二次请求');
await print(3000,'第三次请求');
}
test();