问题描述
以下代码给出了意外的结果。它只等待1秒的延迟(而不是delayBySeconds()函数指定的5秒),然后按如下所示打印输出。
function func(){
const delaySeconds = 5;
console.log("Alpha");
setTimeout(()=> {console.log("Beta");},1000);
console.log("Gamma");
delayBySeconds(delaySeconds);
console.log(`${delaySeconds} seconds passed`);
}
function delayBySeconds(sec){
let start = Now = Date.Now();
while((Now - start) < (sec * 1000)){
//console.log(Now);
Now = Date.Now();
}
}
func();
输出:
"Alpha"
"Gamma"
"5 seconds passed"
"Beta"
此外,如果在delayBySeconds()中重新激活console.log(Now),则该延迟生效,否则,“经过5秒”将在“ Gamma”之后立即打印。 另一个意外的结果是,如果我代替()=>,而只是在setTimeout()的参数中使用光秃秃的console.log(“ Beta”),则“ Beta”会在“ Gamma”之前打印。任何建议是什么原因造成的?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)