Сообщение от pax
Бенефит: в базе либо Int32 если секунды, либо double если миллисекунды.
|
Исходя из того как бд хранит данные и создаёт файлы с зазорами - это не даст практически никакой разницы, если конечно у тебя документы не просто _id и timestamp.
http://stackoverflow.com/questions/6...tes-in-mongodb
Сообщение от pax
PS: начинаю втягиваться, на первый взгляд сложнее чем на php, потому что надо писать асинхронный код, с другой стороны вроде как и интереснее получается.
|
На самом деле как привыкнешь, потом будет даже не сложнее.
Правда появяться некоторые "трудности", например запустить сразу 3 асинхронных функции, и потом финальную функцию, или сделать очередь асинхронных функций. Есть promise и async.js, но я как обычно юзаю свой вариант решения простой задачи:
function jobsQueue(jobs) {
if (jobs && jobs instanceof Array && jobs.length > 0) {
var count = jobs.length;
var i = -1;
var next = function() {
if (++i < count) {
jobs[i](next);
}
}
next();
}
}
function jobsQueueAsync(jobs, complete) {
if (jobs && jobs instanceof Array && jobs.length > 0) {
var count = jobs.length;
var done = function() {
if (--count == 0 && complete) {
complete();
}
}
for(var i = 0, len = jobs.length; i < len; ++i) {
jobs[i](done)
}
}
}
Первая запускает поочерёдно функции.
Вторая запускает все асинхронно и финальную когда все закончили.
Пользоваться так:
jobsQueue([
function(next) {
...
next();
}, function() {
...
}
]);
jobsQueueAsync([
function(next) {
...
next();
},
function(next) {
...
next();
}
], function() {
... done
});
Ну и тесты:
jobsQueue([
function(next) {
console.log('1');
next();
},
function(next) {
console.log('2a')
setTimeout(function() {
console.log('2b');
next();
}, 400);
},
function(next) {
console.log('3a');
setTimeout(function() {
console.log('3b');
next();
}, 100);
},
function() {
console.log('4');
}
]);
Выдаст:
1 2a 2b 3a 3b 4
Как видишь он даже не начинает выполнение следующей функции до выполнения прошлой.
jobsQueueAsync([
function(next) {
console.log('1');
next();
},
function(next) {
console.log('2a')
setTimeout(function() {
console.log('2b');
next();
}, 400);
},
function(next) {
console.log('3a');
setTimeout(function() {
console.log('3b');
next();
}, 100);
} ],
function() {
console.log('4');
}
);
Выдаст:
1 2a 3a 3b 2b 4
И тут видно что он запускает все сразу, но финальную только когда каждая функция запустит next() по завершению (асинхронно или нет).