Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中带setTimeout的顺序编程?_Javascript - Fatal编程技术网

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;x
setTimeout
接受一个函数-您将函数的返回传递给它,它是
未定义的
,因为您在括号内调用该函数。您可以将
preparePizza
调用封装在箭头函数中,这样您仍然可以将
n
传递到
preparePizza
,而无需执行它立即。
setTimeout(()=>{preparePizza(n)},5000);
正确的重复,以及非描述性的“它不工作!”但是如何生成
console.log(“读取以接受新订单…”)
完成所有比萨饼制作后运行?同时开始准备所有10个比萨饼。如何使其仅在当前比萨饼完成bakePizza后准备比萨饼?听起来您想要的是承诺链接: