zoukankan      html  css  js  c++  java
  • async [ə'zɪŋk] 函数

    ES7提供了async函数,使得异步操作变得更加方便。async函数是什么?一句话,async函数就是Generator函数的语法糖。

    例1:

    var asyncFun = async function () {
      var f1 = await function() {
        console.log('aaaaaa');
      }();
      var f2 = await function () {
        console.log('bbbbbb');
      }();
      console.log('执行完毕');
    };
    
    asyncFun();

    实例:

    结果:

    例2:

    let asyncFun1 = async function(){
      console.log('aaaaaa');
      await Promise.reject('出错啦');  // 抛出例外,直接到例外处处理
      return '第1';
    }
    
    let asyncFun2 = async function(data){
      console.log('bbbbbb');
      console.log('收到参数:' + data);
      return '第2';
    }
    
    asyncFun1().then(asyncFun2)
    .then(function(data){
      console.log('data:' + data);
    })
    .catch(function(error){
      console.log('end,error:' + error);
    });

    实例:

    结果:

    实例:

    结果:

    例3:异步处理(最彻底的解决方案)

    async函数返回的Promise对象,必须等到内部所有 await 命令的Promise对象执行完,才会发生状态改变。也就是说,只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数

    let asyncFun1 = async function(){
      return new Promise(function(resolve,reject){
        setTimeout(function(){
          console.log('aaaaaa');
          resolve(123);
        },2000);
      });
    };
    
    let asyncFun2 = async function(data){
      return new Promise(function(resolve,reject){
        setTimeout(function(){
          console.log('bbb收到数据:' + data);
          resolve(456);
        },1000);
      });
    };
    
    asyncFun1().then(asyncFun2)
    .then(function(data){
      console.log('data:' + data);
    })
    .catch(function(error){
      console.log('end,error:' + error);
    });

    实例:

    结果:

  • 相关阅读:
    【亲测有效】安装npm慢的解决方案
    设置redis开机自动启动
    win10开启redis失败解决方案
    ajax跨域问题
    python进程不能并行的原因,进程阻塞
    python多进程并行代码
    python多进程间通信
    orangepi自启动打开一个终端并且运行脚本
    lxterminal命令打开新窗口并执行python脚本
    orangepi获取cpu温度
  • 原文地址:https://www.cnblogs.com/crazycode2/p/6682252.html
Copyright © 2011-2022 走看看