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

发布于 2024-11-08 05:25:15 字数 303 浏览 0 评论 0原文

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

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

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

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

任何帮助将不胜感激。

谢谢!

Hi
I am trying to call two user defined functions and expecting the first one has to execute first and then the second one.. but they are executing simultaneously.

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

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

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

any help would be appreciated.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

╭ゆ眷念 2024-11-15 05:25:15

警告:需要 jQuery 1.5+

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

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

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

使用 $ 的黑魔法.Deferred$.when< /a>.

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

这是因为 $.ajax 返回 jqXHR 对象继承自 $.Deferred

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

$(function() {
  $.first().pipe($.second).done(function(second_data) {
    // both finished.
  });
});

旧版: jQuery 1.4.2 和 jQuery 1.4.2 1.3.2 支持。

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

$.secondfunc = ...

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

Warning: Requires jQuery 1.5+

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

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

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

Using the black magic of $.Deferred's and $.when.

It basically says when you first function finishes its ajax call then call the second function.

This is because $.ajax returns a jqXHR object which inherits from $.Deferred.

If you want to attach a callback when both $.firstfunc and $.secondfunc complete then you can do the following (requires jQuery 1.6):

$(function() {
  $.first().pipe($.second).done(function(second_data) {
    // both finished.
  });
});

Legacy: jQuery 1.4.2 & 1.3.2 support.

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

$.secondfunc = ...

$(function() {
  $.firstfunc($.secondfunc);
});
意中人 2024-11-15 05:25:15

让第一个函数在代码之后调用第二个函数。

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
});

Have the first function call the second function after the code.

function firstfunc() {
    // Do something

    secondfunc();
}

function secondfunc() {
    // Do something else
}

EDIT (now that I see your edit):

Use the callback portion of the ajax functions.

$.get("somepage.php", "key1=value1&key2=value2", function(data) {
    // This code will run when the result is received
});
听风念你 2024-11-15 05:25:15

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

That happens because Ajax requests are processed Asynchronously. If you want the second function to run after the first, add it to the callback function of the first Ajax request.

酒几许 2024-11-15 05:25:15

您应该从第一个 .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 );
});

You should call the second one from the callback of the first .ajax call.

You can either define it explicitly:

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

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

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

...or pass it as an argument:

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

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

$(document).ready(function(){
    $.firstfunc( $.secondfunc );
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文