zoukankan      html  css  js  c++  java
  • async/await

    async/await

    asyncES7的与异步操作有关的关键字,其返回一个Promise对象,await操作符用于等待一个Promise对象,它只能在异步函数async function内部使用。

    async

    语法

    async function name([param[, param[, ... param]]]) { statements }
    
    • name: 函数名称。
    • param: 要传递给函数的参数的名称。
    • statements: 函数体语句。

    async函数返回一个Promise对象,可以使用then方法添加回调函数,返回的Promise对象会运行执行resolve异步函数的返回结果,如果抛出异常则运行拒绝reject

    实例

    async function asyncPromise(v){
        return v;
    }
    
    asyncPromise(1).then((v) => {
        console.log(v);
    }).catch((e) => {
        console.log(e);
    })
    

    await

    async一般是配合await指令使用的,该指令会暂停异步函数的执行,并等待Promise执行,然后继续执行异步函数,并返回结果。若Promise处理异常rejectedawait表达式会把Promise的异常原因抛出。另外,如果await操作符后的表达式的值不是一个Promise,则返回该值本身。

    实例

    function promise(){
        return new Promise(function(resolve,reject){
            var rand = Math.random() * 2;
            setTimeout(function(){
                resolve(`solve ${rand}`);
            },1000)
        })
    }
    
    (async function asyncPromise(){
        var result = await promise();
        console.log(result);
    })();
    
    // 捕捉异常
    function promise(){
        return new Promise(function(resolve,reject){
            throw new Error(`reject`);
        })
    }
    
    (async function asyncPromise(){
        var result = await promise();
        console.log(result);
    })().catch((e) => {
        console.log(e);
    });
    
    // 非promise对象直接返回该值本身
    function notPromise(){
        return 1;
    }
    
    (async function asyncPromise(){
        var result = await notPromise();
        console.log(result);
    })();
    
  • 相关阅读:
    Asp.net core中间件实现原理及用法解说
    C#中,async关键字到底起什么作用?
    C# 中的Async 和 Await 的用法详解
    .NET委托,事件和Lambda表达式
    docker push到私有仓库 docker push 镜像到harbor
    shell tput的用法
    Shell中获取脚本的绝对路径$( cd "$( dirname "$0" )" && pwd)
    shell脚本中 "set -e" 的作用
    从旧goadddy账号转移域名到新的goaddy账号中
    git制作patch的步骤
  • 原文地址:https://www.cnblogs.com/WindrunnerMax/p/12604334.html
Copyright © 2011-2022 走看看