节点.js异步数组的安全性

node.js safety of asynchronous array

本文关键字:安全性 数组 异步 js 节点      更新时间:2023-09-26
var docs = [];
server.on('add', function(item){
    docs.push(item);
});
setInterval(function(){
    save(docs);
}, 3000);
var save = function(array) {
    var items = array.slice(0); // copy array
    array.length = 0; // clear array
    mongodb.insert(items, function(){
        // ...
    });
};

我想将文档保存到RAM,然后保存到mongodb。此代码安全吗?

Mongodb服务器在欧盟,应用程序服务器在美国。它每秒向基地添加 2-3k 个项目。我想减少连接数量。我的问题:在保存到基数期间,变量可能会被修改(在"添加"中(

这取决于

天气mongodb.insert(docs);一次性对所有元素执行操作。如果它在每个插入元素后触发回调,则您的代码不安全(因为您的数组将在第一个插入元素之后被清除(。

但是,如果操作对所有元素都是同步的,那么您的代码应该是安全的。