4Manuals

  • PDF Cloud HOME

我需要在异步函数中的每个语句之前等待吗? Download

    从文件初始化类的最佳方法(异步)? CSS / JS-如何覆盖一个孩子而不是其他孩子的父母过渡 反应:更改方向后触发重新渲染和offsetWidth的重新计算 我的Javascript从'string'转换为'integer'或'number'无效 如何删除外部索引并合并内部json 在React Native 图片无法通过javascript刷新 如何在react图表上的datakey中操作DateTime 在Cypress中保存变量 此声明在dart中的Future类中意味着什么:FutureOr <R>函数(动态)onValue

我有一个异步函数,其中某些事情似乎先于其他事情乱序执行。我认为这是因为我正在使用异步功能。但是如何使它以正确的顺序(编写方式)执行。我需要在每个这样的语句之前放置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
},

3 个答案:

答案 0 :(得分:1)

仅在预期返回Promise符号的语句中使用await,该语句要等到返回诺言。因此,并非在所有说明中都有提示,而是在您需要的地方提示。

答案 1 :(得分:1)

您的想法绝对是错误的。您只需在异步函数之前添加await,而不是每个语句。

async function logAsync(a) {
    return Promise.resolve(a);
}

function logSync(a) {
    console.log(a);
}

function combination() {
    // you only add await before async functions
    await logAsync("async 1");
    // this does not need await before
    logSync(1);
    logSync(2);
    logSync(3);
}

答案 2 :(得分:0)

将整个块包装在try catch中,并在返回Promises的语句之前等待



Similar searches
    Google Maps GroundOverlayOptions的Flutter版本? WooCommerce客户更改地址时获取电子邮件 删除临时文件夹 Ms-Access-此控件中没有对象 基于Netty的TCP服务器,从客户端接收很长的字符串时出现问题