2010-01-28 24 views
2

好的我有一個HTTPService,只要它從send()調用得到結果就執行dataLoaded(e:ResultEvent):void函數。Flex:取消HTTPService.send()?

行,所以如果我打電話HTTPService.send(),然後再次調用HTTPService.send()前一個接收一個結果之前,我結束了重複運行dataLoaded()這是不可取的

我要的是,如果HTTPService.send()被以前調用之前叫返回結果。我想取消第一個通話,只處理最後一次通話的結果到HTTPService.send()

我希望這是有道理的。

我該怎麼做?

謝謝!

回答

5

其實HTTPService可以爲你管理這個。它有一個併發屬性,您應該將其設置爲「last」。

此處瞭解詳情:HTTPService#concurrency

+0

大家好, 如何停止HTTP服務的執行時,當它在中間? 我的情景; 我做了一個搜索服務,從前端文本輸入數據庫搜索患者。 如果用戶在我再次發送服務呼叫之前更改了他/她所輸入的文本,但是我希望基於最後輸入的文本得到結果,那麼我發送的第一個呼叫()我想銷燬或停止它。 我如何實現這一目標? 在此先感謝。 – 2011-10-31 10:09:34

+0

請參閱:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/http/HTTPService.html#cancel() – 2011-10-31 15:07:02

6

HTTPService有一個取消方法。如果您在沒有參數的情況下調用它,它應該取消上次調用服務。試一試,看看你是否仍然得到不需要的結果事件。

使用ASyncToken的存在來確定取消是否合適。

private var _serviceCall:ASyncToken; 

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

+1,因爲我無法接受我兩個答案:) – 2010-01-28 21:47:38

+0

+1過,因爲它是一個很好的答案:) – 2010-01-28 22:01:27

+0

+1好的答案:P – 2011-08-03 09:23:10

1

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

的HTTPService#併發似乎被引入到Flex 4中,我沒有在Flex 3中找到。在Flex 3.中,您必須手動取消之前的調用,而不是Flex 4中的併發=「last」。

請注意,這不會中斷前一個調用調用的服務器進程,這意味着服務器可能仍然會然而,儘管已經放棄了迴應。

+0

我的錯誤,我發現這個屬性在最新的Flex 3.6中,似乎我的3.x文檔很舊。 – 2011-08-23 05:04:50

相關問題