【问题标题】:Orchestration of javascript functionsjavascript函数的编排
【发布时间】:2012-12-09 12:40:19
【问题描述】:

我正在尝试运行 2 个函数,然后在单击处理程序中重新定位用户。代码如下。

$(".myLink").click( function() {
  function1(param1); // This function contains an ajax call that updates a DB.
  function2(param1); // This function does as well.
  window.location="foo.php";
});

虽然我的 window.location 正确重新定位,但函数未正确触发。我被困在 jQuery 1.43 上,所以我不能使用延迟对象。

处理上述编排的公认架构是什么。

【问题讨论】:

  • I am stuck on jQuery 1.4.3 我为你感到难过。然后使用好的旧回调。

标签: javascript jquery orchestration


【解决方案1】:

回调

$(".myLink").click( function() {
  function1(param1, { success: function() {
    function2(param1, { success: function() {
      window.location = "foo.php";
    }});
  }});
});

或者这个,可以让他们同时开火:

$(".myLink").click( function() {
  completed = 0;
  var success = function() {
    completed++;
    if (completed === 2) {
      window.location = "foo.php";
    }
  }
  function1(param1, { success: success });
  function2(param1, { success: success });
});

如果没有合适的 Defered 库,这基本上是你可以做到的。

【讨论】:

  • 哎呀,我希望它不会这么乱,但有道理。感谢您及时的回复。延迟对象更加优雅!
  • Deferred 是一个概念,正是因为这是多么混乱。
  • @JasonWells 您的函数需要结构化以处理回调。这种结构并不神奇。您尚未发布该代码,因此我无法提供更多建议。
【解决方案2】:

第一个 ajax 调用的 success 函数必须触发第二个 ajax 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 2019-03-23
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2013-03-23
    • 2021-10-10
    相关资源
    最近更新 更多