JavaScript ajax 竞争条件

标签 javascript race-condition

我通过ajax将下面的html存储到div中时遇到问题

<script type="text/javascript" src="site.com/file.js"></script>
<script type="text/javascript">
//use file.js object, get an exception because it doesn't exist

我通过在本地托管它来修复它(/myjs/file.js)。然而,这感觉就像是一个黑客。如何确保先加载然后执行?看来 jquery.ready 不是解决方案,因为在我 ajax html 之前 dom 就已经准备好了。我该如何正确等待?

最佳答案

您提到jQuery.ready ,所以我猜你使用的是 jQuery。如果是这样,则不要输入 <script> div内容中的标签,使用 jQuery.getScript ,这将在脚本加载时给您一个回调。

如果由于某种原因您无法这样做,您可以进行轮询,例如在您的代码中想要使用 file.js 中的内容:

function doSomethingWithFileJS() {
    if (typeof anObjectProvidedByFileJS === "undefined") {
        setTimeout(doSomethingWithFileJS, 50);
        return;
    }

    // Here, you know file.js has been loaded
}

关于JavaScript ajax 竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406259/

相关文章:

javascript - 无法更新当前状态的数组

javascript - 两个用户在 socket.io 中获得控制访问 - 竞争条件

multithreading - 为什么在多线程Scala中出现竞争状况?

multithreading - 什么是竞争条件?

javascript - 从服务器端 python 脚本获取输出

javascript - 为什么 Cesium 查看器在我添加时不显示模型?

javascript - 移动 d3.js slider 的 handle

javascript - 如何让 Chrome 下载 API 等到下载结束?

c - 执行基本 OpenMP (C) 程序期间没有响应

Java try-finally 竞争条件?