javascript - 我需要在异步函数中的每个语句之前放置等待吗?
问题描述
我有一个异步函数,其中一些事情似乎在其他事情乱序之前执行。我认为这是因为我正在使用异步函数。但是我怎样才能让它以正确的顺序执行(它的编写方式?)。我需要await
在每个这样的陈述之前加上吗?
还是我的语法不正确?
async foodDelivered(order_id, table_id)
{
await let tmp_order_id = order_id
await let deliveryTime = 0
await this.btnDeliveredLoading = true
await const index = store.table_timers.findIndex(({ order_id }) => order_id === tmp_order_id)
await if (index != -1) {
// Stop timer
await clearInterval(store.table_timers[index].interval)
// Remove timer
await store.table_timers.splice(
store.table_timers.findIndex(({ order_id }) => order_id === tmp_order_id), 1
)
await deliveryTime = store.table_timers[index].time
}
try {
await OrderHistory.updateColor({
order_id: order_id,
table_id: table_id,
action: 'FOOD_DELIVERED',
})
// Save delivery time
await OrderHistory.saveDeliveryTime({
deliveryTime: deliveryTime,
order_id: order_id,
})
// Refresh
await OrderHistoryClass.getTotalOrderHistory({
date: moment().format('YYYY-MM-DD'),
})
let tables = await Data.getTables()
await store.tables = tables.data
await this.drawerOpened = false
}
await this.btnDeliveredLoading = false
},
解决方案
仅在预期返回Promise
符号的语句中使用等待,直到返回承诺。所以,不是在每条指令中,而是在你需要的地方。
推荐阅读
- java - Java中的继承和数组
- laravel - 如何解决 Vagrant 中的宅基地版本
- google-sheets - 查询后更改/重命名单元格内容
- sas - 如何使用 DO-LOOP 获得越来越多的变量名称?
- scala - 如何在 Google Colab 中安装 Figaro 编程语言?
- django - 更新后使用帖子参数发布后的django重定向
- reactjs - React 测试库 - 渲染没有显示所有的孩子
- zig - 是否可以将 std.builtin.TypeInfo.Error 转换回其错误值?
- php - 我想根据 WooCommerce 中 woocommerce_form_field 的选择框的值更改显示
- xamarin.forms - 转动按钮无法对焦