《智能前端技术与实践》——第 2 章 前端开发基础 ——2.6 深度学习中的 JavaScript——2.6.2 JavaScript 异步编程(上)

简介: 《智能前端技术与实践》——第 2 章 前端开发基础 ——2.6 深度学习中的 JavaScript——2.6.2 JavaScript 异步编程(上)

2.async/await 函数


async 函数是使用 async 关键字声明的函数,是 AsyncFunction 构造函数的实例,并且允许 使用 await 关键字。async 和 await 关键字让我们可以用一种更简洁的方式写出基于 Promise 的 异步行为,而无须刻意地链式调用 Promise。


async 函数可能包含 0 个或多个 await 表达式,await 表达式会暂停整个 async 函数的执行 进程并让出其控制权,只有当等待的基于 Promise 对象的异步操作成功或失败后才会恢复进程。 示例代码如代码清单 2-26 所示。


代码清单 2-26


functionresolveAfter2Seconds() {
returnnewPromise(resolve=> {
setTimeout(() => {
resolve('resolved');
}, 2000);
});
}
asyncfunctionasyncCall() {
console.log('calling');
constresult=awaitresolveAfter2Seconds();
console.log(result);
console.log("hahaCoder")
// 期望输出: "resolved"}
asyncCall();

运行结果如下。


"calling""resolved""hahaCoder"


代码清单 2-26 首先会输出 calling 字符串,接着会执行 resolveAfter2Seconds()函数,由于 该函数前有 await 关键字,故 asyncCall 函数的执行进程会中断,2s 后,即异步操作执行完成 后会恢复进程,从而输出 resolved 和 hahaCoder。


不论是回调函数、Promise 还是 async/await 等其他异步任务解决方案,其本质都是通过 JavaScript 唯一的单线程执行所有任务。


本节最后介绍 HTML5 中新提出的概念——Web Worker,它可以帮助 JavaScript 创建多线 程环境,即允许主线程创建 worker 线程,并将一些任务分配给 worker 线程。


Web Worker 为 Web 内容在后台线程中运行脚本提供了一种简单的解决方法。worker 线程 可以执行任务而不干扰用户界面,等到 worker 线程完成对应的计算任务,将结果返回主线程。 示例代码如代码清单 2-27 所示。


代码清单 2-27


<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>web worker</title></head><body><script>varworker=newWorker("worker.js")
worker.onmessage= (evt) => {
console.log("Message posted from webworker: "+evt.data);
}
worker.postMessage("Hello,I'm hahaCoder from demo.html");
</script></body></html>

Worker.js 中的代码如代码清单 2-28 所示。


代码清单 2-28


postMessage("Hello,I'm shipudong from worker.js");
onmessage= (evt) => {
postMessage("Worker received data: "+evt.data);
};

运行结果如图 2-32 所示。


image.png



《智能前端技术与实践》——第 2 章 前端开发基础 ——2.6 深度学习中的 JavaScript——2.6.2 JavaScript 异步编程(下): https://developer.aliyun.com/article/1228121?groupCode=tech_library


相关文章
|
10月前
|
前端开发 JavaScript
JavaScript异步编程:告别回调地狱的优雅方案
JavaScript异步编程:告别回调地狱的优雅方案
|
10月前
|
前端开发 搜索推荐 开发工具
通义灵码与颜色板生成器,为前端开发提供智能配色解决方案
在前端开发中,色彩搭配对用户体验和界面美观至关重要。通义灵码提供的颜色板生成器通过自动推荐配色方案、随机生成颜色组合及支持自定义调整,帮助开发者高效完成配色任务。该工具支持一键导出为 CSS 样式表,并提供简洁的中文指令交互方式,大大提升开发效率,助力开发者打造美观和谐的用户界面。
|
9月前
|
前端开发 JavaScript
JavaScript中的Async/Await:简化异步编程
JavaScript中的Async/Await:简化异步编程
482 109
|
9月前
|
前端开发 JavaScript API
JavaScript异步编程:从Promise到async/await
JavaScript异步编程:从Promise到async/await
683 204
|
8月前
|
人工智能 前端开发 JavaScript
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
963 18
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
|
10月前
|
前端开发 JavaScript
JavaScript异步编程:从回调地狱到Async/Await
JavaScript异步编程:从回调地狱到Async/Await
|
10月前
|
前端开发 JavaScript
JavaScript异步编程:从回调地狱到Async/Await优雅进化
JavaScript异步编程:从回调地狱到Async/Await优雅进化
|
10月前
|
前端开发 JavaScript
JavaScript异步编程:从回调地狱到优雅解决方案
JavaScript异步编程:从回调地狱到优雅解决方案
|
10月前
|
前端开发 JavaScript
JavaScript异步编程:从Callback到Async/Await的进化
JavaScript异步编程:从Callback到Async/Await的进化

热门文章

最新文章