gpt4 book ai didi

javascript - 同步window.setTimeout回调

转载 作者:行者123 更新时间:2023-11-28 12:43:15 26 4
gpt4 key购买 nike

setTimeout(function() {
console.log("1");
}
console.log("2");

基本上,我想在“2”之前输出“1”。如何将回调函数与当前“调用者”线程同步?

最佳答案

你无法在 JavaScript 中阻止线程(除了 alertconfirm 内置函数),所以唯一的方法就是让你的 console.log("2")发生在您的 console.log("1") 之后是:

  1. 放入超时函数中:

    setTimeout(function() {
    console.log("1");
    console.log("2");
    }, delay);

    ...或在该超时函数调用的另一个函数中,尽管您已经有 setTimeout 的函数,目前还不清楚(除了代码组织之外)为什么您需要一个单独的。

  2. 将其放入传递给 setTimeout 的单独函数中延迟较长:

    setTimeout(function() {
    console.log("1");
    }, delay);
    setTimeout(function() {
    console.log("2");
    }, longerDelay);

    ...小心 longerDelay确实比 delay 足够长您不会因日程安排而陷入困惑。

注意我上面说的是“线程”。除非您使用web workers ,具有特定的语法,浏览器上的 JavaScript 是单线程的。两个 JavaScript 函数无法同时运行,除了 alert 周围的边缘情况浏览器错误之外和 ajax 完成等(至少某些版本的 Firefox 会在你有一个函数等待 alert 时运行你的 ajax 完成回调;奇怪但却是事实,并且你不能依赖跨浏览器甚至跨版本),你当另一个 JavaScript 函数运行时,无法暂停一个 JavaScript 函数。

关于javascript - 同步window.setTimeout回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10689546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com