es6 异步 之async await 学习总结

 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);
            })
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章