gpt4 book ai didi

web-services - flex 3 获取 Web 服务调用以等待结果

转载 作者:行者123 更新时间:2023-12-04 07:10:17 24 4
gpt4 key购买 nike

我有一个从 webservice 检索值的函数,然后遍历返回的值,并为每个返回的值执行另一个 webservice 查找。

然而,我遇到了一个问题,当我在 for 循环中进行第二次 webservice 调用时,该函数不会等待 reuslt 并且只是继续处理,反过来又没有给我任何值(value)

代码看起来像这样;

    private function getResult(e:ResultEvent):void{

var lengthOfResult:int = e.result.length;
var arrayCollResults:ArrayCollection = new ArrayCollection();
var resultArray:Array = new Array(e.result);

for(var i:int = 0 ; i < lengthOfResult; i++){
var currentName:String = e.result[i].toString();
arrayCollResults.addItem(e.result[i] + ws.getMatches(currentName));
}

acu.dataProvider = arrayCollResults;
}

我能做些什么来确保 ws.getMatches(currentName) 的值在移动到下一行之前实际返回一个值?

最佳答案

文档 here表示您不直接调用Web 服务,您需要设置一个事件监听器并在完成交付时处理响应。

从“在 ActionScript 中调用 Web 服务”部分:

<?xml version="1.0"?>
<!-- fds\rpc\WebServiceInAS.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.rpc.soap.WebService;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
private var ws:WebService;
public function useWebService(intArg:int, strArg:String):void {
ws = new WebService();
ws.destination = "echoArgService";
ws.echoArgs.addEventListener("result", echoResultHandler);
ws.addEventListener("fault", faultHandler);
ws.loadWSDL();
ws.echoArgs(intArg, strArg);
}

public function echoResultHandler(event:ResultEvent):void {
var retStr:String = event.result.echoStr;
var retInt:int = event.result.echoInt;
//Do something.
}

public function faultHandler(event:FaultEvent):void {
//deal with event.fault.faultString, etc
}
]]>
</mx:Script>
</mx:Application>

将“arrayCollResults.addItem(...)”段放在 ws.getMatches() 事件的结果处理程序中。

关于web-services - flex 3 获取 Web 服务调用以等待结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com