使用JavaScript在setTimeout中进行顺序编程?

问题描述 投票:-1回答:1

我尝试使用setTimeout,但是我添加了pizzaTask方法,setTimeout似乎不起作用。是的,我在这里不希望任何异步或承诺。

function preparePizza(n) {
  console.log("Finish preparing pizza " + n);
  console.log("Start baking pizza " + n);
  setTimeout(bakePizza, 10000);
}

function bakePizza() {
  console.log("Finish baking pizza");
}

function makePizza(n) {
  console.log("Start preparing pizza " + n);
  setTimeout(preparePizza(n), 5000);
}

function pizzaTask() {
  for (let x = 1; x <= 10; x++) {
    makePizza(x);
  }

  console.log("Read to take new order ...");
}

pizzaTask();
javascript
1个回答
2
投票

问题是您调用preparePizza(n)的方式,这将调用返回undefined的函数。您需要传递一个函数并在此函数内调用它,因为preparePizza接受参数n。解决方案如下。

  function preparePizza(n) {
    console.log("Finish preparing pizza " + n);
    console.log("Start baking pizza " + n);
    setTimeout(bakePizza, 10000);
  }

  function bakePizza() {
    console.log("Finish baking pizza");
  }

  function makePizza(n) {
    console.log("Start preparing pizza " + n);
    setTimeout(function() {
      preparePizza(n)
    }, 5000);
  }

  function pizzaTask() {
    for (let x = 1; x <= 10; x++) {
      makePizza(x);
    }

    console.log("Read to take new order ...");
   }
  
   pizzaTask();
© www.soinside.com 2019 - 2024. All rights reserved.