阮一峰老师的博客:http://www.ruanyifeng.com/blog/2015/05/async.html
菜鸟教程:https://www.runoob.com/w3cnote/es6-async.html
我们需要把第一个promise返回的结果,用在第二个promise里面:
常规写法:
/**
* 常规写法
*/
function getData1(num) {
return new Promise(r=>{
setTimeout(()=>{
r(num+1)
},500)
})
}
function getData2(msg) {
return new Promise(r=>{
setTimeout(()=>{
r(`第一步计算的结果是${msg}`)
},500)
})
}
getData1(2).then(r=>{
console.log(r);
getData2(r).then(r1=>{
console.log(r1);
})
});
控制台:
然后换成async 和 await的写法:
/**
* async 写法
*/
function getData1(num) {
return new Promise(r=>{
setTimeout(()=>{
r(num+1)
},500)
})
}
function getData2(msg) {
return new Promise(r=>{
setTimeout(()=>{
r(`第一步计算的结果是${msg}`)
},500)
})
}
async function result(){
let data1 = await getData1(2);
let data2 = await getData2(data1);
console.log(data1)
console.log(data2)
}
result();
结果一致,但是显然代码结果更加清晰了。