【问题标题】:Can I pass an array to a function using the ... rest* construction?我可以使用 ...rest* 构造将数组传递给函数吗?
【发布时间】:2011-02-02 21:22:49
【问题描述】:

我正在对一个远程对象进行多次类似调用,结果相似。因为这些调用非常相似且非常多变,所以我一直将远程方法的名称保存在配置文件中,当我需要进行调用时,我在远程对象上使用 getOperation(),然后调用 send()操作对象。但是,要求发生了变化,因此并非所有调用都具有相同数量的参数。

因为 send 使用 ...,我是否能够继续使用相同的格式并传递一个数组,或者 send() 会将其视为传递一个数组类型的参数?

【问题讨论】:

  • 作为旁注,也许这将有助于澄清任何混淆:如果您抽象 RO 操作的方式导致问题,因为您的 operation.send() 调用发送一个数组作为唯一参数,请查看 Function.apply()。因此,在您想要将 args 数组拆分为 send() 调用的示例中,您可以执行以下操作:(operation.send as Function).apply(targetThis, arrayOfArgs)。如果您发现将一个数组对象发送到远程方法签名中,那将破坏您的参数。希望有帮助。祝你好运。

标签: apache-flex actionscript-3 actionscript


【解决方案1】:

Operation 类还有一个可以使用的“参数”属性。这样你就可以在调用 send() 之前预填充它。然后 send() 方法不需要额外的参数。

var operation:Operation = Operation(remoteObject.getOperation(methodName));
operation.arguments = parameters;

var token:AsyncToken = operation.send();
var responder:Responder = new Responder(resultHandler, faultHandler);
token.addResponder(responder);

【讨论】:

    【解决方案2】:

    你可以使用 ...rest

    这会给你一个包含一堆对象的数组。我建议您将第一项 [0] 始终设为 ID。此 ID 应标识发送者或传递的对象类型。您可以轻松地为每种类型的项目做一个开关/外壳。您也可以采用更复杂的方式来处理此问题,但这应该可行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2010-10-21
      • 2013-09-14
      • 1970-01-01
      • 2017-05-16
      相关资源
      最近更新 更多