结合promise的retrun使用async await promise.all
模拟一个请求
function timeout() {
//默认返回一个promise对象
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('sucess')
reject('error')
}, 3000); //reject模拟出错,返回error
});
}
//异步函数
async function asyncPrint() {
console.log('start');
//等待下方函数执行完毕后再继续往下执行
await timeout().catch(err => { // 注意要用catch
console.log(err)
})
console.log('end'); //这句代码会被执行
}
结合promise.all的用法
多个await命令的异步操作,如果不存在依赖关系(后面的await不依赖前一个await返回的结果),用Promise.all()让它们同时触发
function test1 () {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1)
}, 1000)
})
}
function test2 () {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2)
}, 2000)
})
}
async function exc1 () {
console.log('exc1 start:',Date.now())
let res1 = await test1();
let res2 = await test2(); // 不依赖 res1 的值
console.log('exc1 end:', Date.now())
}
async function exc2 () {
console.log('exc2 start:',Date.now())
let [res1, res2] = await Promise.all([test1(), test2()])
console.log('exc2 end:', Date.now())
}
exc1();
exc2();
Comments | NOTHING