在 window.onload 中使用回调
Using callbacks in window.onload
我认为对此有一个简单的解决方案,但由于某种原因我没有得到预期的结果。我的函数如下所示:
var functionA = function(callback) {
loadData(fromURL1); // takes some time
loadData(fromURL2); // takes some time
callback(); // Should be called AFTER the loadData() functions are finished
}
var myCallBackFunction = function() {
// this function is called AFTER functionA() is finished
alert("All my loaded data from URL1 and URL2");
}
window.onload = function() {
functionA(myCallBackFunction);
}
不幸的是,上面的 callback()
函数没有等待 loadData()
完成,然后只调用空数据的警报。
我阅读了很多在线示例,但我认为我仍然遗漏了一些明显的东西。
如果 loadData()
是异步操作,你可以做两件事:
使用$.ajaxComplete()
:
var functionA = function(callback) {
loadData(fromURL1); // takes some time
loadData(fromURL2); // takes some time
$.ajaxComplete(function () {
callback(); // Should be called AFTER the loadData() functions are finished
});
}
或链接函数:
var functionA = function(callback) {
loadData(fromURL1, function () {
loadData(fromURL2, function () {
callback(); // Should be called AFTER the loadData() functions are finished
}); // takes some time
}); // takes some time
}
我认为对此有一个简单的解决方案,但由于某种原因我没有得到预期的结果。我的函数如下所示:
var functionA = function(callback) {
loadData(fromURL1); // takes some time
loadData(fromURL2); // takes some time
callback(); // Should be called AFTER the loadData() functions are finished
}
var myCallBackFunction = function() {
// this function is called AFTER functionA() is finished
alert("All my loaded data from URL1 and URL2");
}
window.onload = function() {
functionA(myCallBackFunction);
}
不幸的是,上面的 callback()
函数没有等待 loadData()
完成,然后只调用空数据的警报。
我阅读了很多在线示例,但我认为我仍然遗漏了一些明显的东西。
如果 loadData()
是异步操作,你可以做两件事:
使用$.ajaxComplete()
:
var functionA = function(callback) {
loadData(fromURL1); // takes some time
loadData(fromURL2); // takes some time
$.ajaxComplete(function () {
callback(); // Should be called AFTER the loadData() functions are finished
});
}
或链接函数:
var functionA = function(callback) {
loadData(fromURL1, function () {
loadData(fromURL2, function () {
callback(); // Should be called AFTER the loadData() functions are finished
}); // takes some time
}); // takes some time
}