欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

es6 异步 之async await 学习总结

程序员文章站 2023-12-21 22:35:28
...
 asyncawaitES2016/ es7 新增的两个关键字, 它们借鉴了 ES2015 中生成器在实际开发中的应用。
        目的是为了简化Promise api 的使用, 并非替代 Promise

        async:目的是为了简化在函数的返回值中对Promise的创建
        例如:
         async function test() {
            console.log(1);
            return 2; // resolve  
            //  throw reject
        }

        // 等效于

        function test() {
            return new Promise((resolve, reject) => {
                console.log(1);
                resolve(2);
            })
        }

        await: 关键字必须出现在async函数中
        await 等待的是thenable里面成功的状态

          async function test() {
            const result = await 1;
            console.log(result);
        }

        // 等效于

        function test() {
            return new Promise((resolve, reject) => {
                Promise.resolve(1).then(data => {
                    const result = data;
                    console.log(result)
                    resolve();
                })

            })
        }

        上面的那种方法处理的是promise的正常状态,如何处理错误状态呢?

          function getRandom() {
            if (Math.getRandom < 0.5) {
                return 1;
            } else {
                throw 2;
            }
        }

        async function test() {
            try {
                const result = await getRandom();
                console.log("正常状态", result);
            } catch{
                console.log("错误状态",err)
            }
        }

        /**
         * @description:  使用promise 改造 计时器
         * @param : 
         * @return: 
         */
        function delay(duration) {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve();
                }, duration);
            })
        }
相关标签: es6

上一篇:

下一篇: