【问题标题】:Passing parameters between functions and result handlers在函数和结果处理程序之间传递参数
【发布时间】:2010-07-10 01:14:12
【问题描述】:

我有一个函数 fooA(valueA1, valueA2),它调用 web 方法 myWSA()。收到结果后,它调用结果处理程序,该处理程序又调用另一个 Web 服务 myWSB(value2)。我想知道如何将这个 value2 传递/访问到 foo2。这些值:value1 和 value2 取决于单击的按钮。

private function fooA(valueA1:int, valueA2:int){
     callResponder.token = myWSA(valueA1);
}

private function myWSA_resultHandler(event:ResultEvent ) {
     myWSB(value2); //----------> I want to use the parameter, value2, passed in fooA here.

}


<fx:Declarations>
<s:WebService id = "myWebService"
                      wsdl = "http://MyWebService?wsdl"
                      fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)">
            <s:operation name = "myWSA"
                         result= "myWSA_resultHandler(event)"/>

</s:WebService>
<s:CallResponder id = "callResponder" />
</fx:Declarations>

<s:Button id = "button1"
          label="Button1"
       click = "fooA(val1, val2)"/>
<s:Button id = "button2"
          label="Button2"
       click = "fooA(val3, val4)"/>

【问题讨论】:

  • foo2 是什么意思?它不在您的代码中,因此很难遵循您要查找的内容。你想用 value2 做什么,为什么你不能在 resultHandler 方法中使用它?我不明白你的问题是什么。请澄清,我会尽力提供帮助。

标签: apache-flex actionscript


【解决方案1】:

您不能在另一个方法中从一个方法访问参数。返回源并访问原始值。

如果您能够假设 Val1 和 val2 在第一次调用和第二次调用之间不会发生变化,只需使用 this.val1 正常访问它们。

如果您想假设这些值可能会改变,或者是特定于调用的,那么您需要在第一次调用时存储这些值,假设它们可能会改变,您需要编写一个机制跟踪正在进行的呼叫及其相关的相关属性。

不过,我质疑您要完成的工作。将 Web 服务 1 和 Web 服务 2 封装到同一个调用中不是更好吗?

【讨论】:

  • 只有在收到 Web 服务 1 的结果时才需要调用 Web 服务 2,因此,我在 Web 服务 1 的结果处理程序中调用 Web 服务 2。这可以防止我将 web 服务 1 和 web 服务 2 包装在同一个调用中,除非有我遗漏的方法。
  • 我不明白为什么您需要在 Web 服务 1 之后调用 Web 服务 2,尤其是因为您已经描述了这两个操作之间没有客户端交互。您没有描述为什么不能在服务器上将这两个东西链接在一起的原因。
  • WebService 1 是写入服务器,WebService 2 是从服务器读取。只有在写入完成后,我才想调用读取,我正在使用 WebService 1 的结果事件来调用 Web 服务 2。
  • 为什么不能在同一个服务调用中读写呢?我一直看到它完成了。有什么理由我的一些原始建议对你不起作用/
  • Web 服务是提供给我的,我无法对其进行更改。有什么解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多