在jquery回调后执行代码
Executing code after jquery call back
假设我有以下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');
放在函数回调中,不幸的是,我继承了一个非常大的代码库,在回调中干扰所有这些函数调用是不可行的
.load()
是一个异步方法,您作为参数传递给它的匿名函数只有在异步方法完成执行时才会执行。
"我认为js代码是按照文件的顺序执行的。"确实如此,这就是这里发生的事情。但是,因为.load()
回调函数是回调函数(即只有在异步操作完成后才会触发),所以alert('Call back called');
只有在将来某个时候被调用时才会触发。
$.ajax({
url: 'myfile.html',
async: false
success: function(result) {
alert('Call back called');
}
});
alert('You should alert second');
使用纯javascript,只需为第二个alert()
区域中的内容添加一个带有回调参数的函数:
$(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);
});
您可以使用Deferred Object来处理异步调用。这样,无论何时返回响应,您的代码都将按读取顺序执行:
$(function() {
var jqxhr = $.get('myfile.html', function(data) {
$('#some_id').html(data);
alert('Call back called');
});
jqxhr.done(function() {
alert('You will alert second');
});
});
如果您希望alert('You should alert second');
第二次发生,您需要从回调函数中调用它
$(function() {
$('#some_id').load('myfile.html', function() {
alert('Call back called');
alert('You should alert second');
});
});
相关文章:
- 有没有一种方法可以通过只引用JavaScript来执行代码
- jQuery在类更改时执行代码
- 如果此代码运行,请执行代码
- Javascript等待ajax成功后再执行代码
- 如何在onclick事件执行代码时在ImageButton上设置加载gif
- php,如果我点击按钮程序重新加载页面,并且从不继续执行代码
- Javascript渲染.如何编写Javascript;t在函数调用结束之前继续执行代码
- 无法让 jQuery 以正确的顺序执行代码
- ReactJS:在带有 ajax 调用的 .map() 语句完成后执行代码
- 从一个文本框执行代码,并在另一个文本框中以 HTML 显示输出
- 自执行代码中的“this”
- 为什么Javascript不按顺序执行代码
- 如何在javascript中连续执行代码
- 加载所有图像后执行代码
- 按下多个按钮时执行代码
- 如何在检索到数据后使用drawCallback执行代码
- 等待promise解析后再执行代码
- jQuery没有为具有新id的新元素执行代码
- 如何在客户端Collection增长时立即反应性地执行代码
- 如何将变量表达式转换为可执行代码(而不是替换值)