Прервать вызов RemoteObject

Можно ли прервать вызов гибкого удаленного объекта? Я попробовал описанный ниже метод, но HTTP-запрос все еще загружается в фоновом режиме:

var r:RemoteObject = new RemoteObject('<myDestination>');
r.source('myClass');
r.myMethod.addEventListener(ResultEvent.RESULT, myResponse);

r.myMethod(); // lets say this method takes 5 second to call

r.channelSet.disconnectAll(); // I thought this would abort the actual HTTP request but its still running

ИЗМЕНИТЬ

Меня интересует освобождение HTTP-конвейера браузеров, как и в javascript, где вы можете использовать прерывание в XHR.


person Dennis    schedule 07.04.2011    source источник
comment
ваша проблема на самом деле не на стороне гибкости, а на стороне сервера. я обновил свой ответ.   -  person ktutnik    schedule 12.04.2011


Ответы (2)


вы можете попробовать cancel() метод AbstractOperation.

r.getOperation("OperationName").cancel();

ОБНОВЛЕНИЕ:

Это проблема, я вызываю большой вызов, затем пользователь покидает представление, поэтому мне больше не нужно ждать ответа. Прямо сейчас http-запрос блокирует любые дальнейшие запросы. Есть какое-нибудь решение для этого?

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

чтобы остановить текущий запущенный поток на стороне сервера, зависит от того, какую сторону сервера вы использовали.

person ktutnik    schedule 07.04.2011
comment
Как узнать название операции? - person Dennis; 07.04.2011
comment
@ Денис: вы должны знать, какую операцию на стороне сервера вы хотите отменить. это было необходимо. Вам нужно только указать имя в строке - person ktutnik; 08.04.2011

Обратите внимание, что отмена операции повлияет только на клиента Flex - ваши респонденты никогда не будут вызваны. На стороне сервера запрос выполняется нормально (потребляя ресурсы до конца), и вам придется написать некоторый собственный код, чтобы предотвратить это.

person Cornel Creanga    schedule 07.04.2011
comment
Это проблема, я вызываю большой вызов, затем пользователь покидает представление, поэтому мне больше не нужно ждать ответа. Прямо сейчас http-запрос блокирует любые дальнейшие запросы. Есть какое-нибудь решение для этого? - person Dennis; 11.04.2011
comment
На стороне сервера ваш запрос выполняется в потоке сервером приложений, и он не должен блокировать любые другие запросы (которые выполняются в разных потоках). Он может блокировать другие запросы, если для этого требуется огромное количество ЦП (я не думаю, что в случае с многоядерным ЦП) или потому, что он требует некоторых эксклюзивных блокировок на других ресурсах (например, таблицах базы данных, файлах и т. Д.). Что происходит в вашем случае? Есть решения, но не общие, они зависят от ваших конкретных вариантов использования. Что вы делаете в своем запросе на стороне сервера? - person Cornel Creanga; 12.04.2011
comment
Думаю, я вас неправильно понял, браузер HTTP Pipelining заблокирован. - person Dennis; 12.04.2011