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

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

举个例子:

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

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

 

 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)

 

上一篇:数据结构入门-栈


下一篇:ES6中async函数