Javascript 为什么这个简单的回调在setTimeout之前执行?
此代码段将“输出2”记录在“输出1”之前,由于设置超时,这是很酷的Javascript 为什么这个简单的回调在setTimeout之前执行?,javascript,callback,Javascript,Callback,此代码段将“输出2”记录在“输出1”之前,由于设置超时,这是很酷的 const func1=()=>{ 设置超时(()=>{ console.log('output 1'); }, 3000); }; 常量func2=()=>{ console.log('output 2'); }; func1(); func2() 为什么func1不在func2之前执行 是的 Func1设置运行时的超时 Func2日志 3秒钟后,调用传递给setTimeout的回调函数 如果要使Func2在步骤3之后运行,
const func1=()=>{
设置超时(()=>{
console.log('output 1');
}, 3000);
};
常量func2=()=>{
console.log('output 2');
};
func1();
func2()代码>
为什么func1不在func2之前执行
是的
Func1设置运行时的超时
Func2日志
3秒钟后,调用传递给setTimeout
的回调函数
如果要使Func2在步骤3之后运行,则需要在传递给setTimeout
的回调结束时调用它
为什么func1不在func2之前执行
是的
Func1设置运行时的超时
Func2日志
3秒钟后,调用传递给setTimeout
的回调函数
如果要在步骤3之后运行Func2,则需要在传递给setTimeout
的回调结束时调用它
函数2不会等待函数1中启动的计时器完成
func1();
func2();
执行这两个函数时,函数1设置计时器,函数2注销
最终,函数1在3秒钟后注销
您的第二个代码片段也差不多。简单解释-
函数2不会等待函数1中启动的计时器完成
func1();
func2();
执行这两个函数时,函数1设置计时器,函数2注销
最终,函数1在3秒钟后注销
您的第二个代码段的作用与此基本相同。JavaScript不会等待setTimeout完成,然后执行下一个函数。
当javascript遇到setTimeOut时,它会使用提供的超时存储函数,在本例中为3秒。在将它存储在调用堆栈中之后,它只开始执行它下面的函数,因为第二个函数中并没有任何内容,所以它会立即执行(显然是在3秒钟之前)。这就是为什么在第一个函数的日志之前看到第二个函数的日志。
要执行第一个函数,然后执行第二个函数,可以使用承诺链接。
例如:
希望这会有帮助。如果我错了,请随意更正。JavaScript不会等待setTimeout完成,然后执行下一个函数。
当javascript遇到setTimeOut时,它会使用提供的超时存储函数,在本例中为3秒。在将它存储在调用堆栈中之后,它只开始执行它下面的函数,因为第二个函数中并没有任何内容,所以它会立即执行(显然是在3秒钟之前)。这就是为什么在第一个函数的日志之前看到第二个函数的日志。
要执行第一个函数,然后执行第二个函数,可以使用承诺链接。
例如:
希望这会有帮助。如果我错了,请随意更正。为什么要这样做?您的main()。它不会改变脚本的任何流程。setTimeout
异步传递函数的寄存器默认情况下不会这样做。为什么要这样做?您的main()。它不会改变脚本的任何流程。setTimeout
异步传递函数的寄存器默认情况下不会这样做。您能给我看一个使func2在步骤3后运行的代码吗?您能给我看一个使func2在步骤3后运行的代码吗?