javascript - Sequential programming with setTimeout in JavaScript?
问题描述
I have tried using setTimeout
but I added pizzaTask
method, the setTimeout
doesn't seem to work. Yes, I do not want any async or promises here.
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();
解决方案
问题是你调用的方式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();
推荐阅读
- javascript - Express.js 应用程序在尝试查询 PostgreSQL 数据库时超时
- r - R:将复杂的时间序列数据帧转换为长
- .net-core-3.1 - System.Text.Json - 使用属性 (JsonInclude) 覆盖全局 DefaultIgnoreCondition
- python - 如何让信号和插槽跨类连接?
- python-3.x - 加密后安全清除字节数组
- google-apps-script - 库中带有脚本功能的 HTML 在另一个项目中不起作用
- python-sphinx - Sphinx 没有正确格式化重载的 Python 函数参数
- javascript - Redis 键替代
- azure - Azure DataFactory:计划管道的开始/结束时间
- ios - BGProcessingTask 由于信号 9 而终止