两个异步函数调用填充同一个数组
Two asynch function calls filling the same array?
节点和异步编程的新手。 调用在两个不同的异步调用中填充数组的函数是否存在问题。 我所说的一个简单的例子是:
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优雅地处理了这个问题? 当我运行它时它可以工作,但我不确定我是否只是幸运地没有碰撞。
两个异步调用可能在同一时间尝试推送到 myArray。
JavaScript 并发模型指定非阻塞事件循环。一次只有一个正在执行的事件,并且不能在两者之间运行任何事件。事件按可预测的顺序发生。使用此模型,JavaScript 不会出现您在有线程时可能期望的并发问题。
更多阅读:https://developer.mozilla.org/en/docs/Web/JavaScript/EventLoop 和 https://en.wikipedia.org/wiki/JavaScript#Miscellaneous
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 两个异步函数调用填充同一个数组
- 从CodeBehind调用JavaScript函数无法填充getElementbyID
- 为什么在使用 ajax 调用填充表后不使用 jquery 函数
- 重复一个函数调用7次,然后使用angularjs用返回值填充标签
- 动态填充复选框,并在勾选函数调用服务器端