节点和异步编程的新手段。调用一个函数来填充两个不同的异步调用中的数组有问题吗?我正在谈论的一个简单示例是:两个异步函数调用填充相同的数组?
var myArray = [];
function filler(n) {
return new Promise(function (resolve, reject) {
for (var i = 0; i < 10; i++) {
myArray.push(n + i);
}
resolve();
});
}
filler(3).then(function() {
console.log('Done with filler passing 3');
});
filler(10).then(function() {
console.log('Done with filler passing 10');
});
setTimeout(function() {
console.log(myArray);
}, 3000);
这两个异步调用都可能试图在相同的时间推送到myArray。有没有问题,或者是否node.js优雅地处理?它运行时,我运行它,但我不知道如果我只是幸运,没有碰撞。
JavaScript是单线程。没有并发问题。 – Tomalak
@Tomalak:JavaScript不是单线程的。 NodeJS是,但。 –
哪些引擎不是? – Tomalak