mirror of
https://github.com/finos/SymphonyElectron.git
synced 2025-02-25 18:55:29 -06:00
SEARCH-438
- Implemented the real-time indexing in a queue and flush
This commit is contained in:
39
js/search/queue.js
Normal file
39
js/search/queue.js
Normal file
@@ -0,0 +1,39 @@
|
||||
let messagesData = [];
|
||||
|
||||
let makeBoundTimedCollector = function(isIndexing, timeout, callback) {
|
||||
let timer;
|
||||
|
||||
return function (...args) {
|
||||
if (!timer){
|
||||
timer = setTimeout(function(){
|
||||
if (!isIndexing) {
|
||||
flush(getQueue())
|
||||
}
|
||||
}, timeout);
|
||||
}
|
||||
|
||||
let queue = getQueue();
|
||||
queue.push(args[0]);
|
||||
|
||||
if (!isIndexing()) {
|
||||
flush(queue);
|
||||
}
|
||||
};
|
||||
|
||||
function flush(queue) {
|
||||
clearTimeout(timer);
|
||||
timer = null;
|
||||
resetQueue();
|
||||
callback(JSON.stringify(queue));
|
||||
}
|
||||
|
||||
function getQueue(){
|
||||
return messagesData
|
||||
}
|
||||
|
||||
function resetQueue(){
|
||||
messagesData = []
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = makeBoundTimedCollector;
|
||||
Reference in New Issue
Block a user