首页 > 解决方案 > 我无法使用 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在任务函数中等待执行,然后完成函数执行。

这不是现实生活中的问题。我想知道这里发生了什么。有人可以向我解释一下吗?

标签: javascript

解决方案


您的函数没有使用承诺,这就是它不起作用的原因!

function take() {
  return new Promise(resolve => {
    setTimeout(() => {
       console.log('take order');
       resolve()
    }, 4000);
  })
  
}

推荐阅读