Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
在jquery中调用两个用户定义函数_Jquery_Function_Callback_Call - Fatal编程技术网

在jquery中调用两个用户定义函数

在jquery中调用两个用户定义函数,jquery,function,callback,call,Jquery,Function,Callback,Call,嗨 我试图调用两个用户定义的函数,希望第一个函数必须先执行,然后第二个。。但它们是同时执行的 $.firstfunc = function(){ //Do something //jQuery.ajax({ }); $.secondfunc = function(){ //Do something jQuery.ajax({ }); $.(document).ready(function(){ $.firstfunc(); $.secondfunc(); }); 任何帮助都将不胜感激 谢谢

嗨 我试图调用两个用户定义的函数,希望第一个函数必须先执行,然后第二个。。但它们是同时执行的

$.firstfunc = function(){
//Do something
//jQuery.ajax({
});

$.secondfunc = function(){
//Do something
jQuery.ajax({
});

$.(document).ready(function(){
$.firstfunc();
$.secondfunc();
});
任何帮助都将不胜感激


谢谢

让第一个函数调用代码后的第二个函数

function firstfunc() {
    // Do something

    secondfunc();
}

function secondfunc() {
    // Do something else
}
编辑(现在我看到您的编辑):

使用ajax函数的回调部分

$.get("somepage.php", "key1=value1&key2=value2", function(data) {
    // This code will run when the result is received
});

这是因为Ajax请求是异步处理的。如果希望第二个函数在第一个函数之后运行,请将其添加到第一个Ajax请求的回调函数中。

警告:需要jQuery 1.5+

$.firstfunc = function() {
  return $.ajax({});
}

$.secondfunc = function() {
  return $.ajax({});
}

$(function() {
  $.when($.firstfunc).then($.secondfunc);
});
使用’s和’s的黑魔法

它基本上说,当第一个函数完成其ajax调用时,然后调用第二个函数

这是因为返回一个从
$.Deferred
继承的对象

如果要在
$.firstfunc
$.secondfunc
都完成时附加回调,则可以执行以下(需要jQuery 1.6):

$(function() {
  $.first().pipe($.second).done(function(second_data) {
    // both finished.
  });
});
传统:jQuery 1.4.2和1.3.2支持

$.firstfunc = function(cb) {
  $.ajax({
    success: function() {
      ...
      cb();
    },
    ...
  });
}

$.secondfunc = ...

$(function() {
  $.firstfunc($.secondfunc);
});

您应该从第一个
.ajax
调用的回调调用第二个

您可以明确定义它:

$.firstfunc = function(){
    //Do something
    jQuery.ajax({
        callback:$.secondfunc
    });
};

$.secondfunc = function(){
    //Do something
    jQuery.ajax({
    });
};

$(document).ready(function(){
    $.firstfunc();
});
…或将其作为参数传递:

$.firstfunc = function( func ){
    //Do something
    jQuery.ajax({
        callback:func
    });
};

$.secondfunc = function(){
    //Do something
    jQuery.ajax({
    });
};

$(document).ready(function(){
    $.firstfunc( $.secondfunc );
});

您要点什么菜?如果您希望secondfunc只在第一个ajax做出响应后执行一次,请在firstfunc ajax的成功函数中调用
secondfunc
。+1回答不错,您也应该为他链接文档。啊,是的,延迟函数。我仍然不知道如何使用它们+1@patrick_dw语法糖很棒:)而且
.pipe
对于中间件来说非常棒。我使用的是jquery1.4.2,答案对我来说是正确的。谢谢Raynos@Raynos我理解并喜欢延迟对象,尽管我真的不明白你为什么在这里添加
.pipe
作为建议——我认为它的主要用途是在解析延迟对象之前进行过滤,所以肯定
。这里什么时候
足够?“如果您需要在$.secondfunc中使用$.firstfunc的结果”-这正是
示例所做的。当
示例执行此操作时,它会将数据从firstfunc传递到
。然后
并因此传递到secondfunc。@Chad:在我写第一篇文章时,OP没有提到ajax。我已经编辑过了。