首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FLEX Cairngorm命令...奇怪的行为

FLEX Cairngorm命令...奇怪的行为
EN

Stack Overflow用户
提问于 2010-01-09 02:39:05
回答 2查看 340关注 0票数 0

当我试图解决在序列化凯恩命令的执行时遇到的问题时,我试图完全绕过事件调度,并简单地实例化我想要执行的命令,然后调用它的execute方法。在此方法中,有一个对委托的调用,该委托调用执行HTTPService.send的ServiceUtils ...

现在,这些命令应该按照我调用它们的确切顺序运行。而且,由于服务器(RAILS)只有一个,所以所有请求都应该以相同的顺序返回。这不是那么..。不同的执行顺序会有所不同。为什么?!?

EN

回答 2

Stack Overflow用户

发布于 2010-01-09 12:26:26

仅仅因为您以特定的顺序发送请求并不意味着响应将以该顺序返回。HTTPService调用是异步的。例如,假设同时发送以下三个请求:

请求1(在服务器上处理需要4秒)

请求2(处理需要0.5秒)

请求3(处理时间为2秒)

假设网络速度不变(以及许多其他环境问题不变),您将首先得到Request 2的响应,然后是Request 3,最后是Request 1。

如果你需要串行调用它们,你应该这样做:

代码语言:javascript
复制
protected function doWork():void {
    request1.send();
}

protected function onRequest1Complete(e:ResultEvent):void {
    request2.send();
}

protected function onRequest2Complete(e:ResultEvent):void {
    request3.send();
}

protected function onRequest3Complete(e:ResultEvent):void {
    // you are done at this point
}

...

<mx:HTTPService id="request1" url="http://example.com/service1" result="onRequest1Complete(event)" />
<mx:HTTPService id="request2" url="http://example.com/service2" result="onRequest2Complete(event)" />
<mx:HTTPService id="request3" url="http://example.com/service3" result="onRequest3Complete(event)" />

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2010-01-09 12:36:41

RJ的回答很好地涵盖了这一点。我只想补充一下:

您的命令将通过您使用的服务创建异步请求。如果您想要“模拟”命令的同步执行,则必须在前一个命令请求的resultHandler中执行后续命令。

尽管这可能不是最干净的方式,但它可能适合您的场景。我需要更多关于服务呼叫的性质和一般应用程序的信息来进行呼叫,无论这是不是最适合你的方法。

HTH、Sri

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2029822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档