我可以在同步函数结束时安全地调用异步函数吗



我似乎找不到一个简单的答案,因为几乎每个资源都会将我的问题转化为";"我可以从异步内部调用同步吗";。我问这个问题也是出于好奇,目的是了解同步和异步之间的关系。

下面是我所想的一个非常基本的例子,但我以前对一些异步和同步元素的处理很差,希望遵循最佳实践。

这些都是我所知道的可以首先安全运行的功能,因为其中大多数都是基于一些系统细节(如日期和时间(的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数据之前运行一些进程。类似于上面的方法是安全的吗?我知道让两个创业公司异步会更容易。

如果您希望startup()在执行其他操作之前执行异步函数callApi()doDataWork(),那么启动也应该是异步函数。

async function startup(){
makeDivs();
getDate();
setUpInputHandlers();
await callApi();
await doDataWork();
}
await startup()
// then do something afer the async functions finish

如果您想在异步函数运行时做其他事情,那么启动不需要是异步函数。

function startup(){
makeDivs();
getDate();
setUpInputHandlers();
(async function(){
await callApi();
await doDataWork();
})();
}
startup()
// do something while async operations run

最新更新