async await promise.all

发布于 2022-12-17  90 次阅读


结合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();

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。