async/await 的理解和用法

async/await 的理解和用法async/await是什么async/await是ES7提出的基于Promise的解决异步的最终方案。asyncasync是一个加在函数前的修饰符,被async定义的函数会默认返回一个Promise对象resolve的值。因此对async函数可以直接then,返回值就是then方法传入的函数。//async基础语法asyncfunctionfun0(){console.log(1);return1;}fun0().then(val=>{conso

大家好,又见面了,我是你们的朋友全栈君。

async/await是什么

async/await 是ES7提出的基于Promise的解决异步的最终方案。

async

async是一个加在函数前的修饰符,被async定义的函数会默认返回一个Promise对象resolve的值。因此对async函数可以直接then,返回值就是then方法传入的函数。

// async基础语法
async function fun0(){ 
   
    console.log(1);
    return 1;
}
fun0().then(val=>{ 
   
    console.log(val) // 1,1
})

async function fun1(){ 
   
    console.log('Promise');
    return new Promise(function(resolve,reject){ 
   
        resolve('Promise')
    })
}
fun1().then(val => { 
   
    console.log(val); // Promise Promise
})

await

await 也是一个修饰符,只能放在async定义的函数内。可以理解为等待

await 修饰的如果是Promise对象:可以获取Promise中返回的内容(resolve或reject的参数),且取到值后语句才会往下执行;

如果不是Promise对象:把这个非promise的东西当做await表达式的结果。

async function fun(){ 
   
    let a = await 1;
    let b = await new Promise((resolve,reject)=>{ 
   
        setTimeout(function(){ 
   
            resolve('setTimeout')
        },3000)
    })
    let c = await function(){ 
   
        return 'function'
    }()
    console.log(a,b,c)
}
fun(); // 3秒后输出: 1 "setTimeout" "function"
function log(time){ 
   
    setTimeout(function(){ 
   
        console.log(time);
        return 1;
    },time)
}
async function fun(){ 
   
    let a = await log(1000);
    let b = await log(3000);
    let c = log(2000);
    console.log(a);
    console.log(1)
}
fun(); 
// 立即输出 undefined 1
// 1秒后输出 1000
// 2秒后输出 2000
// 3秒后输出 3000

async/await 的正确用法

// 使用async/await获取成功的结果

// 定义一个异步函数,3秒后才能获取到值(类似操作数据库)
function getSomeThing(){ 
   
    return new Promise((resolve,reject)=>{ 
   
        setTimeout(()=>{ 
   
            resolve('获取成功')
        },3000)
    })
}

async function test(){ 
   
    let a = await getSomeThing();
    console.log(a)
}
test(); // 3秒后输出:获取成功
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158149.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • GiD 自定义 简介

    GiD 自定义 简介目录BlogLinks一、前言二、GiD的程序架构六、参考文献BlogLinksDalNur|博客总目录GiD实用教程GiD前处理实例GiD自定义简介GiD后处理实例一、前言  随着计算机技术的发展,有限元法已成为非常强大的数值模拟工具,广泛应用于各个领域。目前,比较常用的大型商用有限元程序有ANSYS,ABAQUS,MARC,ADINA等,由于它们是通用有限元程序,在某些领域的特殊方面(如对于应力场、渗流场、温度场的耦合问

    2022年10月23日
  • QStringList类常用方法总结|QStringList 遍历「建议收藏」

    QStringList类常用方法总结|QStringList 遍历「建议收藏」QStringList类常用方法总结 从QList继承而来,它提供快速索引为基础的接入以及快速插入和清除其成员函数用于操作这个字符串列表如append(),insert(),replace(),removeAll(),removeAt(

  • 安卓ExpandableListView的详细使用教程(附代码解析过程)

    安卓ExpandableListView的详细使用教程(附代码解析过程)ExpandableListView又称可扩展的ListView,它可以实现点击父项展开子项的效果,本文实现了一个比较精美的ExpandableListView。

  • 等价类测试用例设计原则_边界值法测试用例

    等价类测试用例设计原则_边界值法测试用例一、等价类划分法简介1.1什么是等价类划分法?  等价类划分法是黑盒测试中非常重要的测试方法,采用等价类划分法时,无需考虑程序内部结构,设计测试用例是依据游戏策划案进行设计的  等价类是输入条件的一个子数据集合,该输入集合中的数据对于揭示程序中的错误是等价的,从每一个子集中选取少数代表性的数据,从而进行梳理,组合成测试用例  等价类划分法分为:有效等价类、无效等价类。  有效等价类:有效等价类代表对程序的有效输入数据  无效等价类:无效等价类则是以任何方式的无效输入数据。  有效

    2022年10月18日
  • redis windons安装教程

    redis windons安装教程redis windons安装教程

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号