MooTools - объект запроса на повторное использование - PullRequest
1 голос
/ 29 июня 2010

Я хотел бы повторно использовать объект Request.JSON, но я не уверен, как это сделать. Я ищу что-то вроде следующего примера:

// In initialize/constructor
this.request = new Request.JSON( {
    method : 'get'        
});

// Elsewhere
this.request.setOptions({
    url : 'http://...',
    onSuccess : onSuccess,
    onFailure : onFailure
}).send();

Ответы [ 2 ]

3 голосов
/ 29 июня 2010

с таким подходом будут определенные проблемы.

если у вас есть только один экземпляр, обрабатывающий все запросы, то вам нужно убедиться, что во время выполнения запроса нет ничего, что могло бы перезапустить его с новыми параметрами в качестве его асинхронного. Кроме того, события будут складываться. каждый новый экземпляр, который вы запускаете, будет добавлять событие onComplete / onSuccess / onFailure, и они не всегда будут релевантными. поэтому перед каждым запуском необходимо применять removeEvents () к экземпляру запроса.

посмотрите здесь http://www.jsfiddle.net/dimitar/8a7LG/4/

Я не показываю это как пример того, как я написал бы это, но чтобы видеть проблемы, которые идут с этим. сначала нажмите на вторую ссылку, затем на первую (jsfiddle добавляет 2-секундную задержку в сети), и вы увидите предупреждение от события onComplete второй ссылки, также наложенного на первую. Более того, при каждом нажатии на ссылку 2 вы увидите новое предупреждение в дополнение к старым.

Вы также должны подумать о том, насколько уместно расширять Request.JSON, но все зависит от ваших потребностей.

p.s. если вы перейдете к Request.JSONP, структура такого типа может сыграть несколько хитростей, в частности, с сбросом функций обратного вызова и т. д.

удачи:)

edit вот что работает с removeEvents, так что вы не получите накопление: http://www.jsfiddle.net/dimitar/8a7LG/5/

0 голосов
/ 08 мая 2013

Я не различаюсь с точкой зрения принятого ответа, но это фактически обходит вопрос ИМХО.

Посмотрите на следующий пост в блоге (это не мое);там, под подзаголовком Несколько ссылок с Request.HTML вы можете найти некоторые рекомендации о том, как повторно использовать экземпляр Request.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...