JavaScript中带setTimeout的顺序编程?
我尝试过使用JavaScript中带setTimeout的顺序编程?,javascript,Javascript,我尝试过使用setTimeout,但是我添加了pizzaTask方法,setTimeout似乎不起作用。是的,我不希望这里有任何异步或承诺 函数preparePizza(n){ 控制台日志(“完成准备比萨饼”+n); console.log(“开始烘焙比萨饼”+n); 设置超时(bakePizza,10000); } 函数bakePizza(){ 控制台日志(“完成烘焙比萨饼”); } 函数makePizza(n){ 控制台日志(“开始准备比萨饼”+n); 设置超时(preparePizza(
setTimeout
,但是我添加了pizzaTask
方法,setTimeout
似乎不起作用。是的,我不希望这里有任何异步或承诺
函数preparePizza(n){
控制台日志(“完成准备比萨饼”+n);
console.log(“开始烘焙比萨饼”+n);
设置超时(bakePizza,10000);
}
函数bakePizza(){
控制台日志(“完成烘焙比萨饼”);
}
函数makePizza(n){
控制台日志(“开始准备比萨饼”+n);
设置超时(preparePizza(n),5000);
}
函数pizzaTask(){
对于(设x=1;x问题在于调用preparePizza(n)
的方式,这将调用返回undefined
的函数。您需要传递一个函数并在此函数内调用它,因为preparePizza
接受一个参数n
。解决方案如下
函数preparePizza(n){
控制台日志(“完成准备比萨饼”+n);
console.log(“开始烘焙比萨饼”+n);
设置超时(bakePizza,10000);
}
函数bakePizza(){
控制台日志(“完成烘焙比萨饼”);
}
函数makePizza(n){
控制台日志(“开始准备比萨饼”+n);
setTimeout(函数(){
preparePizza(n)
}, 5000);
}
函数pizzaTask(){
对于(设x=1;xsetTimeout
接受一个函数-您将函数的返回传递给它,它是未定义的
,因为您在括号内调用该函数。您可以将preparePizza
调用封装在箭头函数中,这样您仍然可以将n
传递到preparePizza
,而无需执行它立即。setTimeout(()=>{preparePizza(n)},5000);
正确的重复,以及非描述性的“它不工作!”但是如何生成console.log(“读取以接受新订单…”)
完成所有比萨饼制作后运行?同时开始准备所有10个比萨饼。如何使其仅在当前比萨饼完成bakePizza后准备比萨饼?听起来您想要的是承诺链接: