javascript - 异步函数执行顺序与常规函数执行顺序
问题描述
据我了解,异步函数将始终返回一个承诺,我只能在异步函数中使用 await。
对于我的问题,让我们以以下代码示例为例:
async function test1(data){
//do something
await FuncReturnsPromise();
await FuncReturnsPromise2();
//do something
}
和完全相同的功能但不是异步的:
function test2(data){
//do something
FuncReturnsPromise();
FuncReturnsPromise2();
//do something
}
现在在第二个函数(常规函数)中,如果我调用它,它将开始执行以及何时到达FuncReturnsPromise
.
它也将开始执行它,直到它返回承诺并且它将继续(在这里我不等待承诺)到第二次调用,就是这样。
两者都FuncReturnsPromise
执行FuncReturnsPromise2
一些语句,而不是执行 async xhr 请求并返回承诺,这些函数中的第一个语句对我来说至关重要,需要按同步顺序执行。
所以我的问题是我是否可以像这样编写我的异步函数:
async function test1(data,wait){
//do something
if(wait)await FuncReturnsPromise();
else FuncReturnsPromise();
if(wait) await FuncReturnsPromise2();
else FuncReturnsPromise2();
//do something
}
如果我这样调用它,该test1(somedata,false)
函数将像常规函数一样执行吗?或者我应该为我的两个用例声明异步函数和常规函数?
解决方案
它仍然会返回一个 Promise,因为它是一个异步函数,但返回的 Promise 不会跟踪FuncReturnsPromise();
and的解析FuncReturnsPromise2();
。
推荐阅读
- flutter - 在构建 CatMealsScreen 时引发了以下 NoSuchMethodError
- html - 仅当使用 Bootstrap 4.0 在单独的行(小屏幕)上显示图像时,如何为图像添加左侧边距?
- reactjs - 使用 react-i18next 在 React 中设置翻译文档标题(HTML 标签)的最佳方法
- powershell - Powershell 批量返回结果
- mql4 - MetaTrader 终端 4:根据历史数据调试智能交易系统
- node.js - Firestore - 一个循环中的深度集合查询
- visual-studio-code - VS Code Extensions 突然崩溃
- java - ABCL 的解释器可以从 InputStream 加载 Lisp 源吗?
- javascript - 错误覆盖权限
- c# - Blazor wasm,网络核心托管,具有身份验证,应用程序用户和我在共享项目中的模型之间的关系