async 会破坏执行的顺序吗?
"===end1===
===end2==="
这两句打印信息在 insertData函数之前被执行啊? insertData在这两句之后被执行才对啊。
async function openDb(): Promise<void> {
console.log('===openDb===');
}
async function loadDb(): Promise<void> {
console.log('===loadDb===');
}
async function insertData(person: any): Promise<void> {
console.log('===enter into insertData===');
loadDb();
console.log('===await openDb===');
await openDb();
console.log('===after open===');
}
console.log('===start===');
insertData({ name: "yika" });
console.log('===end1===');
console.log('===end2===');
以下是执行结果:
===start===
===enter into insertData===
===loadDb===
===await openDb===
===openDb===
===end1===
===end2===
===after open===
相关推荐
async/await传染性解决方案[源码]
本文详细探讨了JavaScript中async/await的“传染性”问题及其解决方案。传染性指的是当函数使用async声明后,调用它的函数也必须处理Promise,否则可能导致执行顺序错误或未处理的Promise拒绝。文章提出了五种关键解决方案:1. 立即执行匿名函数(IIFE)隔离异步作用域;2. 分离异步逻辑与同步入口实现职责分层;3. 顶层await模块化控制执行时机;4. Promise链式调用中断传染链;5. 事件驱动架构完全解耦异步流程。每种方案都配有适用场景和代码示例,并提供了对比指南。最后总结了根治async传染性的原则,包括作用域隔离、架构分层、事件驱动、按需异步和拥抱Promise等策略,帮助开发者在享受async/await便利性的同时避免其对代码结构的破坏。
confirm提示与同步执行[项目代码]
本文介绍了在使用confirm提示框时,如何通过添加await关键字确保代码按顺序执行。具体示例中,当flag为1时,首先调用getMsg方法获取消息,然后使用带有滚动条的confirm提示框显示消息,用户确认后才会继续执行testFunction方法。这种方法避免了异步操作导致的执行顺序问题,确保了代码的逻辑正确性。
JavaScript异步加载浅析
前言 关于JavaScript脚本加载的问题,相信大家碰到很多。主要在几个点—— 1> 同步脚本和异步脚本带来的文件加载、文件依赖及执行顺序问题 2> 同步脚本和异步脚本带来的性能优化问题 深入理解脚本加载相关的方方面面问题,不仅利于解决实际问题,更加利于对性能优化的把握并执行。 先看随便一个script标签代码—— 代码如下: [removed][removed] 如果放在<head>上面,会阻塞所有页面渲染工作,使得用户在脚本加载完毕并执行完毕之前一直处于“白屏死机”状态。而<body>末尾的打脚本只会让用户看到毫无生命力的静态页面,原本应该
JS异步加载的三种实现方式
本篇文章主要介绍了JS异步加载的三种实现方式,有些时候我们需要JS异步加载,这里整理了详细的代码,有需要的小伙伴可以参考下。
udacity:来自 udacity 的课堂练习
大胆 JavaScript 设计模式 来自 udacity 的课堂练习


