zoukankan      html  css  js  c++  java
  • async基本使用

    async函数在使用上很简单,我们来看一下下面的例子

    async function add(a,b){
    
      return a+b
    
    }
    
    add(1,2).then((res) =>{
    
      consoel.log(res); //3
    
    })

    在上面的例子中我们可以看到。async返回的是一个 prominse对象。可以想prominse一样使用。then的方法

    还有一个特性,在async里有await 这个关键字。他是专属async的方法如果在函数外就会报错

    在函数运行中遇到await会先把异步回调执行完成再去执行下面的内容。看下面这个例子

    function wa(){
        return new Promise((resolve, reject) => {
            console.log('你');
            setTimeout(function(){
                resolve('回来了');
            })
        });
    }
    async function aw(){
        await wa().then(res => console.log(res))
        console.log('欢迎回家');
    }
    
    aw().then(res=>{
        console.log('咳咳');
    })

    它运行出来的结果就是

    回来了

    欢迎回家

    咳咳

     这样我们就可以很好的控制异步回调的内容。看下面的例子

    function fun1(){
        return new Promise((resolve,reject) =>{
            setTimeout(function(){
                resolve('1');
            },3000)
        })
    }
    
    function fun2(){
        return new Promise((resolve,reject) => {
            setTimeout(function(){
                resolve('2');
            },2000)
        })
    }
    
    async function all(){
        await fun1().then((res) =>{console.log(res)});
        await fun2().then((res) =>{console.log(res)});
        return '执行完成了'
    }
    
    all().then((res) =>{
        console.log(res);
    })
    //1
    //2
    //执行完成了

    上面的代码我们想让在fun1执行完成以后再去执行fun2就可以使用这样的方法,这样要比嵌套的写法好进行维护。

    这也是解决回调地狱的方法之一。

  • 相关阅读:
    hdu5360 Hiking(水题)
    hdu5348 MZL's endless loop(欧拉回路)
    hdu5351 MZL's Border(规律题,java)
    hdu5347 MZL's chemistry(打表)
    hdu5344 MZL's xor(水题)
    hdu5338 ZZX and Permutations(贪心、线段树)
    hdu 5325 Crazy Bobo (树形dp)
    hdu5323 Solve this interesting problem(爆搜)
    hdu5322 Hope(dp)
    Lightoj1009 Back to Underworld(带权并查集)
  • 原文地址:https://www.cnblogs.com/chenyudi/p/13356481.html
Copyright © 2011-2022 走看看