在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。我已经编辑过了。