Class: Request.Queue

Контролер class for Request екземплярів (та його subclasses), що накопичує виклики запитів так, щоб одночасно відправлялася лише фіксована кількість запитів.

Навчання/Демо

Implements

Request.Queue Method: constructor

Синтаксис:

new Request.Queue(options);

Аргументи:

  1. options - (object) об'єкт з ключовими/значеннями опцій

Опції

  • stopOnFailure - (boolean, за замовчуванням true) Якщо false, наступний запит у стеку буде викликаний при виникненні помилки або винятку. Інакше всі черговані запитри утримуються, доки ви не викличете метод resume.
  • autoAdvance - (boolean, за замовчуванням true) Якщо true, будь-які черговані запити будуть викликані один за одним, поки вони не закінчаться. Якщо false, ви повинні викликати метод runNext самостійно.
  • concurrent - (number, за замовчуванням 1) Кількість одночасних запитів, які ви бажаєте дозволити.

Події

Всі події, надані Request class, підтримуються з відмінністю, що class спочатку передає ім'я запиту в Request.Queue class, а потім сам екземпляр Request. Тобто, for екземпляр, if onComplete передає текст відповіді, а потім XML відповіді for Request, тоді onComplete передає спочатку ім'я екземпляра, екземпляр Request, за яким слідує текст відповіді, а потім XML відповіді.

  • onRequest
  • onSuccess
  • onComplete
  • onCancel
  • onException
  • onFailure

Окрім цих подій існує подія onEnd, яка спрацьовує, коли всі запити завершилися.

Приклад:

var myRequests = {
    r1: new Request({
        url: '/foo1.php', data: { foo1: 'bar1'},
        onComplete: function(text, xml){
            console.log('myRequests.r1: ', text, xml);
        }
    }),
    r2: new Request({
        url: '/foo2.php', data: { foo2: 'bar2'},
        onComplete: function(text, xml){
            console.log('myRequests.r2: ', text, xml);
        }
    })
};
var myQueue = new Request.Queue({
    requests: myRequests,
    onComplete: function(name, instance, text, xml){
        console.log('queue: ' + name + ' response: ', text, xml);
    }
});
 
myRequests.r1.send();
myRequests.r2.send(); //sends when above request completes
myRequests.r1.send(); //sends when above request completes
etc.

У вищезазначеному прикладі, коли кожен запит завершується, він спочатку виводить повідомлення 'myRequests.rq: <text>, <xml>' з події onComplete, вказаної в кожному екземплярі запиту. Потім він виводить повідомлення 'queue: r1/r2 response: <text>, <xml>' з методу onComplete в події Request.Queue, вказаної в його опціях.

Request.Queue Method: addRequest

Додає екземпляр Request (або його subclasses) до управління Request.Queue for.

Синтаксис:

myRequestQueue.addRequest(name, request);

Аргументи:

  1. name - (string) Ім'я, яке ви хочете асоціювати з this запитом
  2. request - (object) Екземпляр Request або один з його subclasses (таких як Request.HTML).

Приклад:

var foo = new Request();
myRequestQueue.addRequest('fooRequest', foo);

Це дозволяє посилатися на цей екземпляр у черзі в інших методах, перелічених нижче.

Повертає

  • object - Цей екземпляр Request.Queue.

Request.Queue Method: addRequests

Додає кілька запитів одночасно (див. addRequest).

Синтаксис:

myRequestQueue.addRequests(requests);

Аргументи:

  1. requests - (object) об'єкт ключ/значення, де ключі — це імена for кожного екземпляра запиту, а значення — самі екземпляри.

Приклад:

var foo = new Request();
var bar = new Request();
myRequestQueue.addRequests({
    req1: foo,
    req2: bar
});

Це дозволяє посилатися на specific екземпляри з іншими методами class.

Request.Queue Method: getName

Для даного екземпляра Request this метод returns ім'я, під яким він зареєстрований.

Синтаксис:

myRequestQueue.getName(request);

Аргументи:

  1. request - (object) екземпляр Request або один з його subclasses.

Приклад:

var foo = new Request();
myRequestQueue.addRequest('fooRequest', foo);
myRequestQueue.getName(foo); //fooRequest

Повертає

  • mixed - Якщо ім'я знайдено, він returns це ім'я (string), else інакше він returns null if Queue не керує цим екземпляром.

Request.Queue Method: removeRequest

Видаляє екземпляр Request або один з його subclasses з управління чергою. Будь-які черговані або запущені запити від цього екземпляра зберігаються (див. clear).

Синтаксис:

myRequestQueue.removeRequest(request);

Аргументи:

  1. request - (mixed) Ви можете передати або екземпляр Request для видалення, або ім'я, під яким він зареєстрований.

Приклад:

var foo = new Request();
myRequestQueue.addRequest('fooRequest', foo);
myRequestQueue.removeRequest(foo);
//OR
myRequestQueue.removeRequest('fooRequest');

Request.Queue Method: getRunnning

Returns будь-які екземпляри Request, які зараз запущені (але не обов'язково екземпляри, що стоять у черзі до запуску).

Синтаксис:

myRequestQueue.getRunning();

Повертає

  • object - Об'єкт Request екземплярів, які мають відкриті запити.

Request.Queue Method: send

Відправляє запит, використовуючи вказаний екземпляр.

Синтаксис:

myRequestQueue.send(name, options);

Аргументи:

  1. name - (string) ім'я екземпляра Request, з яким ви його зареєстрували.
  2. options - (objects) опції, які будуть передані методу send цього екземпляра.

Приклад:

var foo = new Request();
myRequestQueue.addRequest('fooRequest', foo);
myRequestQueue.send('fooRequest', {data: {some:'thing'}});

Примітка:

Справді немає причин використовувати this метод. Ви повинні просто викликати метод send, який існує в екземплярі запиту. Request.Queue автоматично обробить чергування.

Повертає

  • object - Цей екземпляр Request.Queue.

Request.Queue Method: hasNext

Визначає if чи є запит у черзі.

Синтаксис:

myRequestQueue.hasNext([name]);

Аргументи:

  1. name - (string, опціонально) Якщо вказано, буде шукати у черзі for будь-яких чергованих запитів for specific запит.

Приклад:

var foo = new Request();
myRequestQueue.addRequest('fooRequest', foo);
foo.send({data: {some:'thing'}}); //runs immediately
foo.send({data: {something:'else'}}); //is queued until above request returns
myRequestQueue.hasNext(); //true
myRequestQueue.hasNext('fooRequest'); //true
myRequestQueue.hasNext('barRequest'); //false

Повертає

  • boolean - Returns true if є будь-які запити, що відповідають вказаному імені. Якщо ім'я не вказано, він returns true if є будь-які запити у черзі взагалі.

Request.Queue Method: runNext

Запускає наступний запит у черзі. Якщо опція "autoAdvance" встановлена в true (за замовчуванням), вам дійсно не потрібно викликати this метод.

Синтаксис:

myRequestQueue.runNext([name]);

Аргументи:

  1. name - (string, опціонально) Якщо вказано, черга буде поширюватися for наступного чергованого запиту for вказаного екземпляра Request, інакше запуститься наступний доступний запит у черзі.

Повертає

  • object - Цей екземпляр Request.Queue.

Request.Queue Method: runAll

Запускає всі черговані запити одночасно.

Синтаксис:

myRequestQueue.runAll()

Повертає

  • object - Цей екземпляр Request.Queue.

Request.Queue Method: resume

Якщо опція stopOnFailure встановлена в true (за замовчуванням), то всі наступні запити будуть черговані і залишатимуться такими, доки ви не скажете class відновити запити.

Синтаксис:

myRequestQueue.resume()

Повертає

  • object - Цей екземпляр Request.Queue.

Request.Queue Method: clear

Очищує чергу запитів.

Синтаксис:

myRequestQueue.clear([name])

Аргументи:

  1. name - (string, опціонально) Якщо вказано, будуть видалені лише запити, що стоять у черзі for specific екземпляр Request.

Приклад:

myRequestQueue.clear('foo'); //any pending requests for the 'foo' request are removed
myRequestQueue.clear(); //all pending requests are cleared

Повертає

  • object - Цей екземпляр Request.Queue.

Request.Queue Method: cancel

Скасовує запущений запит for вказаного екземпляра Request.

Синтаксис:

myRequestQueue.cancel(name);

Аргументи:

  1. name - (string) Ім'я екземпляра Request, як ви його зареєстрували.

Приклад:

var foo = new Request();
myRequestQueue.addRequest('fooRequest', foo);
foo.send({data: {some:'thing'}}); //runs immediately
foo.send({data: {something:'else'}}); //is queued until above request returns
myRequestQueue.cancel('foo'); //cancels the currently running request for *foo*
//SAME AS foo.cancel()

Примітка:

Цей метод не призначений для використання. Як ілюстровано вище, ви можете просто викликати метод cancel на екземплярі запиту замість цього. Примітка: що він не скасовує очікувані запити від цього екземпляра. У вищезазначеному прикладі, як тільки ми скасовуємо перший запит, другий одразу спрацює.

Повертає

  • object - Цей екземпляр Request.Queue.
© Linux.ria.com, 2008-2026