节点同步运行,等待循环完成

时间:2017-08-11 07:21:11

标签: node.js

我在项目中遇到了一些问题,因为节点是异步的,但现在我有一个for loop,我在循环结束或中断之后做了一些事情,它似乎同步工作而且我想知道原因。

我有这段代码:

            var newItem = true;

            for (var i = 0; i < cart.length; i++) {
                if (cart[i].title == slug) {
                    cart[i].qty++;

                    newItem = false;
                    break;
                }
            }

            if (newItem) {
                cart.push({
                    title: slug
                });
        }

所有这一切都按预期工作! newItem变量始终具有正确的值。

为什么newitem并不总是true

cart数组中的项目从不超过3项,这是为什么?如果我有1000件物品会有不同的表现吗?

1 个答案:

答案 0 :(得分:0)

您提供的代码是同步运行的,如果您想测试它是否在异步条件下运行,请尝试运行此代码

var newItem = true;

for (var i = 0; i < cart.length; i++) {
    setTimeout(function(){
        if (cart[i].title == slug) {
            cart[i].qty++;

            newItem = false;
            break;
        }
    }, 1000);
}

if (newItem) {
    cart.push({
        title: slug
    }
}