es6 异步 之async await 学习总结

简介: es6 异步 之async await 学习总结
 async 和 await 是 ES2016/ 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);
            })
        }
相关文章
|
6月前
|
前端开发
async和await 优雅处理异步
async和await 优雅处理异步
|
2月前
|
C# UED
C#一分钟浅谈:异步编程基础 (async/await)
在现代软件开发中,异步编程对于提升应用性能和响应性至关重要,尤其是在处理网络请求和文件读 异步编程允许程序在等待操作完成时继续执行其他任务,从而提高用户体验、高效利用资源,并增强并发性。在 C# 中,`async` 用于标记可能包含异步操作的方法,而 `await` 则用于等待异步操作完成。 示例代码展示了如何使用 `async` 和 `await` 下载文件而不阻塞调用线程。此外,本文还讨论了常见问题及解决方案,如不在 UI 线程上阻塞、避免同步上下文捕获以及正确处理异常。
52 0
|
4月前
|
前端开发 JavaScript
Vue 中 Promise 的then方法异步使用及async/await 异步使用总结
Vue 中 Promise 的then方法异步使用及async/await 异步使用总结
137 1
|
3月前
|
C#
C# async await 异步执行方法
C# async await 异步执行方法
53 0
|
5月前
|
JSON 前端开发 JavaScript
ES6引入Promise和async/await解决异步问题
【6月更文挑战第12天】ES6引入Promise和async/await解决异步问题。Promise处理异步操作,有pending、fulfilled、rejected三种状态,支持链式调用和并行处理。async/await是基于Promise的语法糖,使异步代码更同步化,提高可读性。两者都是处理回调地狱的有效工具,开发者应根据需求选择合适的方式。
54 3
|
6月前
|
监控 前端开发 JavaScript
等一下!深入async/await的异步世界
等一下!深入async/await的异步世界
97 1
|
6月前
|
API
es6读书笔记(六) async await
es6读书笔记(六) async await
|
6月前
|
监控 前端开发 JavaScript
async/await:使用同步的方式去写异步代码
async/await:使用同步的方式去写异步代码
98 1
|
11月前
|
前端开发
ES6学习(十)—async 函数
ES6学习(十)—async 函数
|
存储 Dart 数据库
Dart异步之Future以及async、await的使用
Dart异步之Future以及async、await的使用
218 2