首页 > 解决方案 > 带有javascript和竞争条件的执行顺序?

问题描述

我的印象是 javascript 同时执行所有行,这是使它与许多其他编程语言不同的一件事。我有以下代码用于简单索引;

var newAcceptIndex = 0;
function addNewAccept(event) {
    var newAccept = `some new accept ${newAcceptIndex}`
    $(event.target).closest("[id^='new_item_']").before(newAccept);
    newAcceptIndex += 1
};

我希望第一次调用时的 newAcceptIndex 为 1,因为所有代码都应同时执行,因此设置为 1 而不是 0。我遇到了竞争条件还是按预期工作?

标签: javascript

解决方案


JS 代码不会同时运行,您可能只是在考虑提升 JS 对它们的变量和函数所做的事情,这样它们就不会立即抛出错误。您只需要像在其他编程语言中一样重新组织您的代码 - 从上到下执行:

var newAcceptIndex = 0;
function addNewAccept(event) {
    newAcceptIndex += 1
    var newAccept = `some new accept ${newAcceptIndex}`
    $(event.target).closest("[id^='new_item_']").before(newAccept);
};

推荐阅读