【发布时间】:2021-12-24 17:43:12
【问题描述】:
我似乎找不到一个直接的答案,因为几乎每个资源都将我的问题反转为“我可以从异步内部调用同步”。我也是出于好奇而询问,目的是了解同步和异步之间的关系。
下面是我所想的一个非常基本的示例,但我过去曾在一些异步和同步元素方面表现不佳,并希望遵循最佳实践。
这些都是我知道可以安全地首先运行的所有功能,因为它们中的大多数都是基于一些系统详细信息(例如日期和时间)的 html 设置。
// Fires from body's onload
function startup(){
// Begin startup and setup
makeDivs();
getDate();
setUpInputHandlers();
// Begin API and Async functions
startupAsync();
}
async function startupAsync(){
await callApi();
await doDataWork();
// more async functions throughout.
}
我不希望做任何与异步数据同步的事情,但我希望在我跳转到我的 API 调用并处理 API 数据之前运行一些进程。类似于上述的方法会是一种安全的方法吗?我知道让两家初创公司异步会更容易。
【问题讨论】:
-
简短回答:是的,完全没问题。 "...理解的意图..." async/await 只是语法糖在 Promises 之上,像 JS 的
class是其基于原型的继承系统之上的语法糖。如果您想了解async/await的工作原理,请查看 Promises。async/await只是“隐藏”了所有.then((arg) => { ... })