zoukankan      html  css  js  c++  java
  • 理解异步函数(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

     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参数数组返回值,顺序是 一 一 对应的)

  • 相关阅读:
    4-结对开发地铁
    第五周学习进度博客
    mybatis的使用
    从写json作业谈起
    工作中慢慢明白的道理
    从参与公司开发到离职
    这也是风云变幻的年代
    学习的习惯和方法跟得上时代要求
    公司中springcloud项目遇到的问题
    实习生在公司的成长
  • 原文地址:https://www.cnblogs.com/duanzhenzhen/p/15252727.html
Copyright © 2011-2022 走看看