2016-03-01 2 views
0

У меня есть метод в Meteor, для выполнения которого требуется немного времени, и этот метод называется много раз с разными параметрами.Очередь метода сервера Meteor.js

Но клиент может изменить параметры, пока данные все еще загружаются, поэтому я хочу, чтобы сервер мог как-то очистить очередь методов. Возможно ли это

Так просто для примера:

Сервер:

Meteor.methods({ 
    'getLongTimeExecutedData': function (settings, reset) { 
    let self = this; 
    if(reset) { 
     // How to reset my entire queue here. 
    } 
    Meteor._sleepForMs(1000); 
    let myData = { settings: settings, timestamp: new Date() }; 
    return myData; 
    } 
}); 

Клиент:

Meteor.call('getLongTimeExecutedData', { param1: 'test' , param2: 1 }, false); 
Meteor.call('getLongTimeExecutedData', { param1: 'test' , param2: 2 }, false); 
Meteor.call('getLongTimeExecutedData', { param1: 'test' , param2: 3 }, false); 
... 
// Reset queue on server with true here 
Meteor.call('getLongTimeExecutedData', { param1: 'test2' , param2: 1 }, true); 
Meteor.call('getLongTimeExecutedData', { param1: 'test2' , param2: 2 }, false); 
Meteor.call('getLongTimeExecutedData', { param1: 'test2' , param2: 3 }, false); 
... 

Я не хочу использовать this.unblock(), так как метод использует соединение MS SQL, и если он все еще выполняется, он обрабатывает много нежелательного запроса на сервер.

Надеюсь, у кого-нибудь есть идеи? :)

// Питер

ответ

0

есть несколько проектов очереди заданий, доступных для этого

https://github.com/artwells/meteor-queue

https://github.com/vsivsi/meteor-job-collection

+0

это единственный способ контролировать это, добавив все мои вызовы методов в Сначала коллекцию? Просто подумайте, что это странный подход к этому. Кроме того, я не хочу, чтобы задания были сложены ... Я хочу, чтобы каждый клиент имел свой собственный стек, но просто хочу иметь возможность отменить все нежелательные запросы в стеке. – DesignMonkeyDK

Смежные вопросы