Контролер class for Request екземплярів (та його subclasses), що накопичує виклики запитів так, щоб одночасно відправлялася лише фіксована кількість запитів.
new Request.Queue(options);
Всі події, надані Request class, підтримуються з відмінністю, що class спочатку передає ім'я запиту в Request.Queue class, а потім сам екземпляр Request. Тобто, for екземпляр, if onComplete передає текст відповіді, а потім XML відповіді for Request, тоді onComplete передає спочатку ім'я екземпляра, екземпляр Request, за яким слідує текст відповіді, а потім XML відповіді.
Окрім цих подій існує подія 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 (або його subclasses) до управління Request.Queue for.
myRequestQueue.addRequest(name, request);
var foo = new Request(); myRequestQueue.addRequest('fooRequest', foo);
Це дозволяє посилатися на цей екземпляр у черзі в інших методах, перелічених нижче.
Додає кілька запитів одночасно (див. addRequest).
myRequestQueue.addRequests(requests);
var foo = new Request(); var bar = new Request(); myRequestQueue.addRequests({ req1: foo, req2: bar });
Це дозволяє посилатися на specific екземпляри з іншими методами class.
Для даного екземпляра Request this метод returns ім'я, під яким він зареєстрований.
myRequestQueue.getName(request);
var foo = new Request(); myRequestQueue.addRequest('fooRequest', foo); myRequestQueue.getName(foo); //fooRequest
Видаляє екземпляр Request або один з його subclasses з управління чергою. Будь-які черговані або запущені запити від цього екземпляра зберігаються (див. clear).
myRequestQueue.removeRequest(request);
var foo = new Request(); myRequestQueue.addRequest('fooRequest', foo); myRequestQueue.removeRequest(foo); //OR myRequestQueue.removeRequest('fooRequest');
Returns будь-які екземпляри Request, які зараз запущені (але не обов'язково екземпляри, що стоять у черзі до запуску).
myRequestQueue.getRunning();
Відправляє запит, використовуючи вказаний екземпляр.
myRequestQueue.send(name, options);
var foo = new Request(); myRequestQueue.addRequest('fooRequest', foo); myRequestQueue.send('fooRequest', {data: {some:'thing'}});
Справді немає причин використовувати this метод. Ви повинні просто викликати метод send, який існує в екземплярі запиту. Request.Queue автоматично обробить чергування.
Визначає if чи є запит у черзі.
myRequestQueue.hasNext([name]);
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
Запускає наступний запит у черзі. Якщо опція "autoAdvance" встановлена в true (за замовчуванням), вам дійсно не потрібно викликати this метод.
myRequestQueue.runNext([name]);
Запускає всі черговані запити одночасно.
myRequestQueue.runAll()
Якщо опція stopOnFailure встановлена в true (за замовчуванням), то всі наступні запити будуть черговані і залишатимуться такими, доки ви не скажете class відновити запити.
myRequestQueue.resume()
Очищує чергу запитів.
myRequestQueue.clear([name])
myRequestQueue.clear('foo'); //any pending requests for the 'foo' request are removed myRequestQueue.clear(); //all pending requests are cleared
Скасовує запущений запит for вказаного екземпляра Request.
myRequestQueue.cancel(name);
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 на екземплярі запиту замість цього. Примітка: що він не скасовує очікувані запити від цього екземпляра. У вищезазначеному прикладі, як тільки ми скасовуємо перший запит, другий одразу спрацює.
| © Linux.ria.com, 2008-2026 |