javascript - 我无法使用 async-await 函数控制异步任务顺序
问题描述
我在 javascript 中使用 async-await 函数时遇到了一个问题。让我们先看看我的代码。
function take() {
setTimeout(() => {
console.log('take order');
}, 4000);
}
function complete() {
setTimeout(() => {
console.log('complete order');
}, 20);
}
async function processOrder() {
let a = await take();
let b = await complete();
}
processOrder();
在上面的代码中,我使用await来控制任务的顺序。但是它不起作用。完成函数在taks函数之前执行。但是我使用await在任务函数中等待执行,然后完成函数执行。
这不是现实生活中的问题。我想知道这里发生了什么。有人可以向我解释一下吗?
解决方案
您的函数没有使用承诺,这就是它不起作用的原因!
function take() {
return new Promise(resolve => {
setTimeout(() => {
console.log('take order');
resolve()
}, 4000);
})
}
推荐阅读
- javascript - React.js 对话框组件消失但仍保留在 DOM 中
- r - 问题:两组的 Kruskal-Wallis 检验
- python - 如何在python中捕获异常消息?
- wpf - 如何在 MahApps.Metro.Controls 窗体的子窗口中添加 WPF Web 浏览器
- python - 我正在尝试使用 python 3 而不是 python 2
- reactjs - React.js:useState Hook Setter 没有更新状态
- python - Django/Wagtail - 自定义表单小部件 CSS/JS 媒体未使用模板文件呈现
- regex - 仅当指定的字符出现一次时才匹配的正则表达式
- node.js - 上传文档或图像以及其他表单字段 node express
- excel - MS Excel 在 Google 表格中替代 ={A:A} 公式