Flex: отменить HTTPService.send ()? - PullRequest
2 голосов
/ 28 января 2010

ОК. У меня есть HTTPService, который выполняет функцию dataLoaded(e:ResultEvent):void всякий раз, когда получает результат от вызова send ().

ОК, поэтому если я вызову HTTPService.send(), а затем снова вызову HTTPService.send()до того, как предыдущий получит результат, я в конечном итоге постоянно запускаю dataLoaded(), что нежелательно

Что я хочу, это если мне вызовут HTTPService.send() до того, как предыдущий вызов вернет результат.Я хочу отменить первый вызов и обработать только результат последнего вызова на HTTPService.send()

Надеюсь, это имеет смысл.

Как я могу это сделать ??

Спасибо !!

Ответы [ 3 ]

6 голосов
/ 28 января 2010

HTTPService имеет метод отмены. Если вы вызываете его без его параметра, он должен отменить последний вызов службы. Попробуйте и посмотрите, получаете ли вы по-прежнему нежелательные ResultEvents.

Используйте наличие ASyncToken для определения целесообразности отмены.

private var _serviceCall:ASyncToken;

function callMyService(stuff:Object):void {
    if (_serviceCall !== null) {
        myService.cancel();
        _serviceCall = null;
    }
    _serviceCall = myService.send(stuff)
}
5 голосов
/ 28 января 2010

На самом деле HTTPService может управлять этим для вас. У него есть свойство concurrency , которое вам, вероятно, следует установить на «last».

Подробнее здесь: HTTPService # одновременный

1 голос
/ 23 августа 2011

В дополнение к ответу Роберта: Flex: отмена HTTPService.send ()?

HTTPService # параллелизм, кажется, введен до Flex 4, я не нахожу это во Flex 3. . Во Flex 3. вы должны отменить предыдущий вызов вручную в отличие от параллелизма = "last" во Flex 4.

Обратите внимание, что это не будет прерывать серверный процесс, который вызывает предыдущий вызов, это означает, что сервер все еще может получить ответ, однако гибкий отказ от этого уже.

...