【发布时间】:2017-09-11 07:32:50
【问题描述】:
我正在尝试编写“现代”js,并通过使用 async/await 来避免回调和承诺。但是,我不能完全理解它是如何工作的。我认为“下一个”功能会等到第一个功能完成后再运行。
在我的应用程序中,这四个函数都是对 MySQL DB 的 ajax 调用,以更新记录并选择其他数据并构建要写入 DOM 的新 html 表。
这四个函数是按顺序完成的,导致界面不正确。刷新整个页面可以解决问题,但如果函数能够按照我定义的顺序运行和完成,那么界面就是正确的。
async function reloadAllTable(workOrderId,statusId) {
await techSelectTable(workOrderId);
await updateWOStatus(workOrderId,statusId);
await loadWOScheduled(statusId);
await loadWOAssigned(statusId);
}
reloadAllTable(workOrderId,statusId);
【问题讨论】:
-
你在等待一个承诺。这些函数中的任何一个都返回承诺吗?如果没有,那是你的问题。
-
没有。它们都是处理数据库记录的ajax例程,但这些过程必须按顺序发生。
-
你如何期望 JS 知道他们什么时候完成?例如是否
techSelectTable完成后通常会调用传入的回调什么的?
标签: javascript async-await ecmascript-2017