Flex:取消HTTPService.send()?

时间:2010-01-28 17:11:06

标签: flex httpservice

好的我有HTTPService只要从send()调用得到结果就会执行dataLoaded(e:ResultEvent):void函数。

好的,如果我打电话给HTTPService.send(),然后在前一个收到结果之前再次致电HTTPService.send(),我最终会反复运行dataLoaded(),这是不受欢迎的

我想要的是在前一次调用之前调用HTTPService.send()会返回结果。我想取消第一个电话,只处理上次拨打HTTPService.send()

的结果

我希望这是有道理的。

我该怎么做?

谢谢!

3 个答案:

答案 0 :(得分:6)

HTTPService有一个cancel方法。如果在没有参数的情况下调用它,它应该取消最后一次调用服务。尝试一下,看看你是否还有不受欢迎的ResultEvents。

使用ASyncToken的存在来确定取消是否合适。

private var _serviceCall:ASyncToken;

function callMyService(stuff:Object):void {
    if (_serviceCall !== null) {
        myService.cancel();
        _serviceCall = null;
    }
    _serviceCall = myService.send(stuff)
}

答案 1 :(得分:5)

实际上,HTTPService可以为您管理。它有一个并发属性,您应该将其设置为“last”。

此处有更多信息:HTTPService#concurrency

答案 2 :(得分:1)

除了罗伯特的回答:Flex: Cancel HTTPService.send()?

HTTPService#concurrency似乎是在Flex 4之前引入的,我在Flex 3中找不到它。。在Flex 3。中,您必须手动取消上一个调用,而不是Flex 4中的concurrency =“last”。

请注意,这不会中断先前调用调用的服务器进程,这意味着服务器可能仍然会响应已经放弃的响应。