4.ES7中 的Async/await

本文介绍了ES7中async和await关键字的使用,它们是基于generator函数的语法糖,简化了异步编程。async函数返回Promise对象,await用于等待异步操作完成。示例展示了如何使用async/await处理异步流程,以及与Promise链式调用的比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    // 这是ES7的语法,它是基于generator函数做的语法糖。async用于申明一个function是异步的,返回一个promise对象,而await可以认为是async wait的简写,等待一个异步方法执行完成。async必须声明的是一个function,await必须在声明的函数内部使用。

    async function demo() {

        setTimeout(() => {

            console.log('异步函数');// 3ci await.html: 18 异步函数

        }, 1000)

        return '返回值'

    }

    demo()

    console.log(demo());//Promise {<fulfilled>: '返回值'}

    demo().then(res => {

        console.log(res);//返回值

    })

    async function demo2() {

        let result = await Promise.resolve(222)

        console.log(result);//222

    }

    demo2()

    // Promise虽然一方面解决了callback的回调地狱,但是相对的把回调“纵向发展”了,形成了一个回调链。

    function sleep(wait) { //定义一个sleep函数,该函数返回一个Promise对象

        return new Promise((res, rej) => { //构造函数传入两个参数:res--表示异步成功要执行的函数,rej--表示异步失败要执行的函数

            setTimeout(() => { // 延迟操作模拟等待过程

                res(wait) //当经过一段时间后,采用Promise的resolve方法把Promise状态从pending转换为fulfilled,并将延迟时间作为结果返回

            }, wait)

        })

    }

    sleep(100).then(result => { // 调用sleep函数并在异步结束后执行回调函数

        return sleep(result + 100) // 如果成功就返回新的Promise对象

    }).then(result02 => { // 在上一个Promise状态变为fulfilled之后,执行这个then回调函数

        return sleep(result02 + 100) // 返回新的Promise对象

    }).then(result03 => { // 在上一个Promise状态变为fulfilled之后,执行这个then回调函数

        return sleep(result03 + 100) // 返回新的Promise对象

    })


 

    async function deme() { //async函数定义了一个异步操作

        let result01 = await sleep(100) // 等待第一轮延迟结束,获取返回结果,并赋值给result01变量

        let result02 = await sleep(100) // 继续等待第二轮延迟结束,获取返回结果,并赋值给result02变量

        let result03 = await sleep(100) // 继续等待第三轮延迟结束,获取返回结果,并赋值给result03变量

        return result03 // 返回3轮延迟的最后结果

    }

    deme().then(result => {

        console.log(result);//100

    })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值