如何在设置超时执行时停止执行其他代码?
how to stop other code from executing while set timeout is executing?
此问题与 How to stop other code from running until setTimeout() finishes running?
重复
在上述问题中,此人不希望在执行 setTimeout 函数之前执行任何代码。所以那个函数永远不会被执行。但在我的例子中,我希望执行 setTimeout 之后的代码。(在 setTimeout 完成执行之后)
但是它对我不起作用。这是代码:
console.log("Hello Wolrd");
var prev_exe = false;
setTimeout(function(){
console.log("Hello Again");
prev_exe = true;
}, 3000)
function bye() {
if(!prev_exe) {
return;
}
console.log("Gud Bye");
}
bye();
我希望输出是:
你好世界
再次问好
再见
但这并没有发生,代码只是 运行 第两个 console.log() 语句,第三个被忽略。
请帮助我理解我的代码有什么问题。
您不想停止来自运行ning的其他代码,您想让其他代码等待 运行 - 所以 if (!prev_exe) { return
不是您需要的逻辑,因为那意味着 Gud Bye
永远不会被记录。
考虑从超时构建一个 Promise,并对其调用 .then
:
console.log("Hello Wolrd");
const againProm = new Promise((resolve) => {
setTimeout(function(){
console.log("Hello Again");
resolve();
}, 3000);
});
function bye() {
console.log("Gud Bye");
}
againProm.then(bye);
此问题与 How to stop other code from running until setTimeout() finishes running?
重复在上述问题中,此人不希望在执行 setTimeout 函数之前执行任何代码。所以那个函数永远不会被执行。但在我的例子中,我希望执行 setTimeout 之后的代码。(在 setTimeout 完成执行之后)
但是它对我不起作用。这是代码:
console.log("Hello Wolrd");
var prev_exe = false;
setTimeout(function(){
console.log("Hello Again");
prev_exe = true;
}, 3000)
function bye() {
if(!prev_exe) {
return;
}
console.log("Gud Bye");
}
bye();
我希望输出是: 你好世界 再次问好 再见
但这并没有发生,代码只是 运行 第两个 console.log() 语句,第三个被忽略。
请帮助我理解我的代码有什么问题。
您不想停止来自运行ning的其他代码,您想让其他代码等待 运行 - 所以 if (!prev_exe) { return
不是您需要的逻辑,因为那意味着 Gud Bye
永远不会被记录。
考虑从超时构建一个 Promise,并对其调用 .then
:
console.log("Hello Wolrd");
const againProm = new Promise((resolve) => {
setTimeout(function(){
console.log("Hello Again");
resolve();
}, 3000);
});
function bye() {
console.log("Gud Bye");
}
againProm.then(bye);