Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在执行回调后执行某些操作_Javascript_Jquery - Fatal编程技术网

Javascript 在执行回调后执行某些操作

Javascript 在执行回调后执行某些操作,javascript,jquery,Javascript,Jquery,我试图在执行回调后执行一个函数 这是我的例子 var callback1 = function () { // check input ($(this).val()) for validity here }; var callback2 = function () { // make other things after callback1 has finished }; $("input[type='text']").change(callback1); 然后,在执行回调1后,我希望

我试图在执行回调后执行一个函数

这是我的例子

var callback1 = function () {
  // check input ($(this).val()) for validity here
};
var callback2 = function () {
 // make other things after callback1 has finished
};

$("input[type='text']").change(callback1);
然后,在执行回调1后,我希望执行回调2。

使用jquery/javascript的正确方法是什么?您可以使用匿名函数并在其中包含两个回调

$("input[type='text']").change(function(){ 
  callback1();
  callback2();
});

您可以使用匿名函数并在其中包含两个回调

$("input[type='text']").change(function(){ 
  callback1();
  callback2();
});

callback1
末尾执行
callback2

var callback1 = function () {
    // check input ($(this).val()) for validity here
    callback2();
};
var callback2 = function () {
    // make other things after callback1 has finished
};

$("input[type='text']").change(callback1);
或者,如果希望使它们完全独立,可以将函数传递给
change()
事件,该事件单独调用回调:

var callback1 = function () { /* code */ };
var callback2 = function () { /* code */ };
$("input[type='text']").change(function() {
    callback1();
    callback2();
});

callback1
末尾执行
callback2

var callback1 = function () {
    // check input ($(this).val()) for validity here
    callback2();
};
var callback2 = function () {
    // make other things after callback1 has finished
};

$("input[type='text']").change(callback1);
或者,如果希望使它们完全独立,可以将函数传递给
change()
事件,该事件单独调用回调:

var callback1 = function () { /* code */ };
var callback2 = function () { /* code */ };
$("input[type='text']").change(function() {
    callback1();
    callback2();
});

在另一个匿名函数中调用两个回调函数:

$("input[type='text']").change(function() {
    callback1;
    callback2;
});

在另一个匿名函数中调用两个回调函数:

$("input[type='text']").change(function() {
    callback1;
    callback2;
});
只需像下面这样做:

$("input[type='text']").change(function() {
    callback1();
    callback2();
});
只需像下面这样做:

$("input[type='text']").change(function() {
    callback1();
    callback2();
});

您可以分配多个回调,如下所示:

$('input ...')
    .on('change', callback1)
    .on('change', callback2)
其他答案的编写方式有一个区别(即,使用迭代运行两个回调的匿名函数)。考虑这个代码:

function callback1(evt) {
    // check input ($(this).val()) for validity here

    // stop any other handlers from running
    evt.stopPropagation();
}

function callback2() {
    // make other things after callback1 has finished
}

您可以通过调用
evt.stopPropagation()
(我认为返回
false
)从
callback1
内部阻止执行
callback2
)。这是需要记住的。

您可以像这样分配多个回调:

$('input ...')
    .on('change', callback1)
    .on('change', callback2)
其他答案的编写方式有一个区别(即,使用迭代运行两个回调的匿名函数)。考虑这个代码:

function callback1(evt) {
    // check input ($(this).val()) for validity here

    // stop any other handlers from running
    evt.stopPropagation();
}

function callback2() {
    // make other things after callback1 has finished
}
您可以通过调用
evt.stopPropagation()
(我认为返回
false
)从
callback1
内部阻止执行
callback2
)。这是需要记住的

  • 创建一个执行cb1和cb2代码的唯一回调

  • 从cb1内部呼叫cb2

  • 创建一个执行cb1和cb2代码的唯一回调

  • 从cb1内部呼叫cb2

  • 使用以下命令: 使用以下命令:
    使用返回要执行的函数的函数

    var callback1 = function (my_callback) {
      return function(){
        // check input ($(this).val()) for validity here
        //   ...
        my_callback();
      }
    };
    var callback2 = function () {
     // make other things after callback1 has finished
    };
    
    $("input[type='text']").change(callback1(callback2));
    

    使用返回要执行的函数的函数

    var callback1 = function (my_callback) {
      return function(){
        // check input ($(this).val()) for validity here
        //   ...
        my_callback();
      }
    };
    var callback2 = function () {
     // make other things after callback1 has finished
    };
    
    $("input[type='text']").change(callback1(callback2));