是否可以停止执行Web服务?
我有一个flex web应用程序,可以搜索具有全名和客户端ID的客户端,当按名称搜索时,usuer只会键入姓氏并且需要很长时间。
由于在客户排队等候时使用该应用程序,我希望能够停止搜索并使用其全名或ID,并避免等待结果,然后必须在结果
感谢
编辑抱歉,我没有正确解释自己,当我的意思是“网络服务”我实际上是指mx.rpc.soap.mxml.WebService,我想阻止它等待结果事件和故障事件。感谢。
答案 0 :(得分:2)
实际上有一个cancel(..)
方法明确用于此目的,尽管它有点埋葬。使用cancel方法将导致不调用结果和错误处理程序,并且还将删除忙碌光标等。
根据您运行搜索的方式(即单独的工作进程等),还可以通过添加cancelSearch()
Web服务方法来扩展它,以终止这些工作进程并释放服务器资源等。
private var _searchToken:AsyncToken;
public function doSearch(query:String):void
{
_searchToken = this.searchService.doSearch(query);
}
protected function doSearch_resultHandler(event:ResultEvent):void
{
trace("doSearch result");
trace("TODO: Do stuff with results");
_searchToken = null;
}
protected function doSearch_faultHandler(event:FaultEvent):void
{
trace("doSearch fault: " + event.fault);
_searchToken = null;
}
public function cancelSearch():void
{
var searchMessageId:String = _searchToken.message.messageId;
// Cancels the last service invocation or an invokation with the
// specified ID. Even though the network operation may still
// continue, no result or fault event is dispatched.
searchService.getOperation("doSearch").cancel(searchMessageId);
_searchToken = null;
trace("The search was cancelled, result/fault handlers not called");
// TODO: If your web service search method is using worker processes
// to do a search and is likely to continue processing for some time,
// you may want to implement a 'cancel()' method on the web service
// to stop any search threads that may be running.
}
答案 1 :(得分:1)
<强>更新强>
您可以使用disconnect()
删除任何待处理的请求响应者,但它也会断开服务的连接。然后拨打initialize()
。
<强> /更新强>
您无法阻止Web服务执行,因为这超出了Flex应用程序的控制范围,但您可以限制Web服务响应的处理。例如,在应用程序上,有一个像Cancel Search
这样的按钮,它将布尔值bSearchCanceled
设置为true
Web服务调用的结果处理程序检查bSearchCanceled
;如果是真的那就回来。