Javascript 在jquery回调后执行代码
假设我有以下js代码Javascript 在jquery回调后执行代码,javascript,jquery,callback,Javascript,Jquery,Callback,假设我有以下js代码 $(function() { $('#some_id').load('myfile.html', function() { alert('Call back called'); }); alert('You should alert second'); // more javascript code ......... }); 出于某种原因,alert('callbackcalled')是最后一个提醒我的东西。我认为js代码是按照文件的
$(function() {
$('#some_id').load('myfile.html', function() {
alert('Call back called');
});
alert('You should alert second');
// more javascript code .........
});
出于某种原因,alert('callbackcalled')
是最后一个提醒我的东西。我认为js代码是按照文件的顺序执行的。是否有方法发出警报(“调用回调”)代码>在所有其他函数之前先执行
看看我的简单代码片段,有人会建议为什么不把alert('You should alert second')在函数回调中,不幸的是,我继承了一个非常大的代码库,在回调中阻塞所有这些函数调用是不可行的。.load()
是一种异步方法,而您作为参数传递给它的匿名函数只有在异步方法完成执行时才会执行。.load()
是一个异步方法,而您作为参数传递给它的匿名函数只有在异步方法完成执行时才会执行。如果您希望提醒('You should alert second');
要在第二秒发生,您需要从回调函数中调用它:
$(function() {
$('#some_id').load('myfile.html', function() {
alert('Call back called');
alert('You should alert second');
});
});
如果您希望alert('you should alert second');
发生在第二秒,您需要从回调函数中调用它:
$(function() {
$('#some_id').load('myfile.html', function() {
alert('Call back called');
alert('You should alert second');
});
});
“我认为js代码是按照文件的顺序执行的。”确实如此,这就是这里发生的事情。但是因为.load()
回调函数是回调函数(即,只有在异步操作完成后才会触发)警报('callback called'))
只会在将来某个时候调用时触发。“我认为js代码是按照文件的顺序执行的。”确实如此,这就是这里发生的事情。但是因为.load()
回调函数是一个回调函数(只在异步操作完成后才会触发)警报('Call back called');
仅在将来某个时候调用时才会触发。正如其他人所指出的,load是一种异步方法,因此您需要使用类似于同步AJAX调用的方法。使用这种方法:
$.ajax({
url: 'myfile.html',
async: false
success: function(result) {
alert('Call back called');
}
});
alert('You should alert second');
正如其他人所指出的,load是一种异步方法,因此您需要使用类似于同步AJAX调用的方法。请这样使用:
$.ajax({
url: 'myfile.html',
async: false
success: function(result) {
alert('Call back called');
}
});
alert('You should alert second');
您可以使用为您处理异步调用的。这样,您的代码将按读取顺序执行,无论何时返回响应:
$(function() {
var jqxhr = $.get('myfile.html', function(data) {
$('#some_id').html(data);
alert('Call back called');
});
jqxhr.done(function() {
alert('You will alert second');
});
});
您可以使用为您处理异步调用的。这样,您的代码将按读取顺序执行,无论何时返回响应:
$(function() {
var jqxhr = $.get('myfile.html', function(data) {
$('#some_id').html(data);
alert('Call back called');
});
jqxhr.done(function() {
alert('You will alert second');
});
});
使用纯javascript,只需为第二个警报()
区域中的内容添加一个带有回调参数的函数:
$(function() {
function someCode (callback) {
$('#some_id').load('myfile.html', function() {
alert('Call back called');
// add parameters, if you like
callback();
});
}
function someMoreCode() {
alert('You should alert second');
// more javascript code .........
}
// And Finally...
someCode(someMoreCode);
});
使用纯javascript,只需为第二个警报()
区域中的内容添加一个带有回调参数的函数:
$(function() {
function someCode (callback) {
$('#some_id').load('myfile.html', function() {
alert('Call back called');
// add parameters, if you like
callback();
});
}
function someMoreCode() {
alert('You should alert second');
// more javascript code .........
}
// And Finally...
someCode(someMoreCode);
});
欢迎来到奇妙的异步世界!你不能这样做。你可以使用承诺来简化这一过程。alert('You should alert second');
在js初始化时立即调用,其中alert('callback called')将仅在调用.load之后调用(查看回调)。load()的回调函数函数被认为正是为了这个目的,你应该把代码放在那里,没有理由不这样做。你可以使用.ajax()
而不是.load()
并设置async:false
就像这里解释的那样:欢迎来到奇妙的异步世界!你不能这样做。你可以用承诺让这更容易。alert('You should alert second');
在初始化js时立即调用,其中只有在调用.load(查看回调)之后才会调用警报('callback called')。load()的回调函数函数被认为正是为了这个目的,您应该将代码放在那里,没有理由不这样做。您可以使用.ajax()
而不是.load()
和setasync:false
如此处所述:这是您正在解释的概念的基本演示,这是您正在解释的概念的基本演示,我同意。如果您否决了某些内容,请留下评论。这似乎是替代异步方法的一个好方法,值得一试。我猜否决投票是因为它不起作用。我尝试过,但你的解决方案没有成功。我同意。如果你否决了某个内容,请留下评论。这似乎是替换异步方法的一个好方法,值得一试。我猜否决是因为它不起作用。我尝试过,但你的解决方案没有成功。很好,但你应该在load
的回调中调用callback
。此外,您不必将加载
调用封装在函数中,只需在某个地方声明回调
并使用它。1.为什么?2.示例?如果您在说明应该做什么和不应该做什么的基础上解释您的观点,这将很有帮助。我实际上喜欢您的解决方案,但希望给出一个不使用jQuery的解决方案。那么,为什么要投票呢down?您的代码产生的结果与他的代码完全相同。就是这样。很好,但您应该在load
的回调函数中调用callback
。此外,您不必将load
调用封装在函数中,只需在某个地方声明callback
并使用它。1.为什么?2.示例?如果您解释一下,会很有帮助d除了说明应该做什么和不应该做什么之外,你的观点是什么。我实际上喜欢你的解决方案,但我想给出一个没有jQuery的解决方案。那么为什么要投反对票呢?你的代码产生的结果与他的代码完全相同。就是这样。