在javascript中,如何传递带有参数的函数以便稍后调用?

时间:2014-09-21 12:27:21

标签: javascript function callback

我在javascript中有以下方法:

  ShowPopupWithCallback("MyController/Load", alertCallback);

  function alertCallback()
  {
        alert("Ready");
  }  

  function ShowPopupWithCallback(url, callbackFunc)
  {
        $.post(url, function (data) {
            $("#myDialog").html(data);
            callbackFunc();
        }, "html");

  }

这很好但我现在想从调用ShowPopupWithCallback方法传入一个参数。类似的东西:

  ShowPopupWithCallback("MyController/Load", alertCallback("My Message"));

  function alertCallback(message)
  {
        alert(message);
  }  

  function ShowPopupWithCallback(url, callbackFunc)
  {
        $.post(url, function (data) {
            $("#myDialog").html(data);
            callbackFunc();
        }, "html");

  }

但这个DOESN" T似乎可以立即调用警报(不是在ajay返回后)

将函数传递给包含其自身参数的方法的正确方法是什么。

3 个答案:

答案 0 :(得分:2)

使用bind执行partial function application

ShowPopupWithCallback("MyController/Load", alertCallback.bind(null, "My Message"));

答案 1 :(得分:2)

您可以使用匿名函数:

ShowPopupWithCallback("MyController/Load", function(){ alertCallback("My Message");});

答案 2 :(得分:0)

您可以简单地将其作为附加参数传递

 function alertCallback(message)
  {
    alert(message);
  }  

function ShowPopupWithCallback(url, msg, callbackFunc)
  {
    $.post(url, function (data) {
        $("#myDialog").html(data);
        callbackFunc(msg);
    }, "html");
  }

ShowPopupWithCallback("MyController/Load", "My Message", alertCallback);