promise实现2次请求,第三步是展示结果。第二次请求,可以拿到第一次请求的结果,但是到了第三步的res不是第二次请求返回的res,该怎么来写。
let a=new Promise((res,rej)=>{
//第一次请求
setTimeout(()=>{
res('data')
})
})
a.then((res)=>{
//第二请求
setTimeout(()=>{
console.log('第二');
},3000)
}).then((res)=>{
//第三步
console.log(res+'第三');
})
如果这个功能改成用asyncawait来写,
function a() {
return new Promise((res, rej) => {
setTimeout(() => {
console.log('1');
res(1)
}, 2000)
})
}
function c() {
return new Promise((res) => {
setTimeout(() => {
console.log('2');
res(2)
}, 3000)
})
}
async function b() {
await a()
await c()
}
let d=b()
c本来是在a中执行,当a执行之后,拿到a传来的参数进行请求或其他操作。现在也成这样类似同步的模式,c改如何拿到原本是a传过来的参数。
第一种在原有代码的基础上修改,可以自行提取
p2
方法出来:第二种,用
await/async
的方法: