将一个函数转换为另一个函数jquery

将一个函数转换为另一个函数jquery,jquery,function,Jquery,Function,我的问题可能很简单,但我在互联网上找不到答案,所以我在这里问: 我有以下代码: function TriggerHeader() { //doing great stuff } function TriggerSlider() { //doing other stuff } 在检查了每个条件之后,我有了一个调用正确触发器的函数 function Action() { $(".content").fadeOut("fast",function () { TriggerSlider

我的问题可能很简单,但我在互联网上找不到答案,所以我在这里问:

我有以下代码:

function TriggerHeader() {
//doing great stuff
}
function TriggerSlider() {
//doing other stuff
}
在检查了每个条件之后,我有了一个调用正确触发器的函数

function Action() {
    $(".content").fadeOut("fast",function () {
    TriggerSlider() {
        TriggerHeader();
    };
});
}
因此,当(“.content”).fadeOut结束时(正如我所希望的那样)调用TriggerSlider() 但是我正在寻找调用TriggerHeader()的正确方法;当TriggerSlider()结束时。我写它的方式是错误的,但我不知道为什么。
有人能启发我吗?

这真的取决于
TriggerSlider()
TriggerHeader()
是如何实现的。如果他们不做任何涉及超时和“独立线程”的事情,他们一个接一个地调用的方法是:

TriggerSlider();
TriggerHeader();
;-)

另一方面,如果
TriggerSlider()
包含动画或其他异步内容,则需要将其完成回调作为函数的参数实现:

function TriggerSlider(completionCallback) {
  setTimeout(500, function() {
    // do something
    // and finally
    completionCallback();
  }
}
现在,您可以调用TriggerSlider并将函数传递给它以在完成时调用:

TriggerSlider(TriggerHeader);

请注意,我没有传递
TriggerHeader()
,因为这将调用函数并返回结果。我将函数作为函数传递,函数调用发生在
TriggerSlider

中。这些行在语法上不正确:

TriggerSlider() {
    TriggerHeader();
};
您必须调整
TriggerSlider
函数,以便在完成后允许回调:

function TriggerSlider(callback) {
    // do stuff
    // ... 
    // now invoke the callback: 
    callback();
    // or pass it to a jQuery function
}
现在,您可以按如下方式设置链:

function Action() {
    $(".content").fadeOut("fast",function () {
        TriggerSlider(TriggerHeader);
    });
}

它取决于
TriggerSlider
TriggerHeader
的内容

如果它们是同步的: 如果
TriggerSlider
有一个带有回调的单个动画: 使用Promise API
您遇到的问题是,当您以编写Triggerslider(){//code}的方式编写Triggerslider时,您试图重新定义Triggerslider的功能。这在语法上是不正确的

如果您想在滑块之后执行header函数,这应该可以工作

function TriggerHeader() {
  //doing great stuff
}

function TriggerSlider() {
  //doing other stuff
  TriggerHeader();
}
function Action() {
   $(".content").fadeOut("fast",function () { TriggerSlider();});
}

使用回调还有其他解决此问题的方法。但是,如果您总是希望触发相同的函数,那么这应该可以正常工作。

它可以与Promise API配合使用(不与回调配合使用),非常感谢!
function TriggerHeader() {
  //doing great stuff
}

function TriggerSlider() {
  //doing other stuff
  TriggerHeader();
}
function Action() {
   $(".content").fadeOut("fast",function () { TriggerSlider();});
}
function TriggerSlider() {
   //Most of your code here
   return $("element").slideUp();
}
$.when(TriggerSlider()).done(TriggerHeader);
function TriggerHeader() {
  //doing great stuff
}

function TriggerSlider() {
  //doing other stuff
  TriggerHeader();
}
function Action() {
   $(".content").fadeOut("fast",function () { TriggerSlider();});
}