首页 > 其他 > 详细

理解异步函数(async await;Promise)

时间:2021-09-11 12:02:10      阅读:32      评论:0      收藏:0      [点我收藏+]

使用场景:某个函数需要等另一个或多个函数执行结束后再执行。

举个例子:

async function getSum() {
    let one = await this.getOne();
    let two = await this.getTwo();
    console.log(‘sum=‘,one,two,one+two)
}

function getOne() {
    return new Promise((resolve,reject)=>{
        setTimeout(function () {
            console.log(‘1‘);
            resolve(10)
        },2000)
    })
}

function getTwo() {
    return new Promise((resolve, reject) => {
        setTimeout(function () {
            console.log(‘2‘)
            resolve(20)
        },1000)
    })
}

控制台打印:2秒后打印1,再过1秒后打印2,最后打印sum

技术分享图片

 

 await只能放在async异步函数内;await 后面跟的是promise对象;多个await是从上到下依次执行;

如果多个await间无先后依赖关系,可以使用Promise.all(),使用方法:

//getOne(),getTwo()两个方法同上

function getSum() {
    Promise.all([this.getOne(),this.getTwo()]).then((res)=>{
        console.log(‘res---‘,res);
        let one = res[0];
        let two = res[1];
        console.log(‘sum=‘,one+two)
    })
}

控制台:(Promise.all中的两个函数并行,getTwo()先执行完,所以先打印的2,.then(res)的res是Promise.all参数数组返回值,顺序是 一 一 对应的)

技术分享图片

 

理解异步函数(async await;Promise)

原文:https://www.cnblogs.com/duanzhenzhen/p/15252727.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!