假设我有以下的js代码
$(function() {
$('#some_id').load('myfile.html', function() {
alert('Call back called');
});
alert('You should alert second');
// more javascript code .........
});出于某种原因,alert('Call back called');是我最不需要注意的东西。我认为js代码按照文件的顺序执行。是否有办法使alert('Call back called');在我的所有其他函数之前先行完成?
看看我的简单代码片段,就会发现为什么不将alert('You should alert second');放在函数回调中,不幸的是,我正在继承一个非常大的代码库,并且干扰回调中的所有函数调用都是不可行的。
发布于 2013-08-27 14:58:37
.load()是一个异步方法,您作为参数传递给它的匿名函数只有在异步方法完成执行时才会执行。
发布于 2013-08-27 15:04:01
“我认为js代码按照文件的顺序执行。”是的,这就是这里发生的事。但是,因为.load()回调函数是,嗯,回调(即只有在异步操作完成后才触发) alert('Call back called');只在将来某个时候调用时才会触发。
发布于 2013-08-27 15:07:35
正如其他人所指出的,load是一个异步方法,因此您需要使用类似于同步AJAX调用的东西。以这种方式使用:
$.ajax({
url: 'myfile.html',
async: false
success: function(result) {
alert('Call back called');
}
});
alert('You should alert second');https://stackoverflow.com/questions/18468936
复制相似问题