有setSource
一个回调参数:
editor.setSource = function(callback) {
// do editor things
callback();
}
然后将要执行的下一个代码块作为回调传递:
editor.setSource(function() {
// do some other things
});
如果你可以访问 jQuery 的延迟对象,你可以在这里使用它们:
- 创建一个新的延迟对象。
- 开始超时以完成您的长期任务。
- 返回延迟对象。
- 在超时时间内,一旦任务完成,调用
deferred.resolve
.
editor = {
setSource: function() {
var deferred = $.Deferred();
console.log("Beginning editor.setSource...");
setTimeout(function() {
// This function took a while to occur
deferred.resolve();
}, 3000);
return deferred;
}
}
$.when(editor.setSource()).then(function() {
console.log("Editor is done!");
});
如果您正在执行 AJAX 或动画或其他已经使用延迟对象的 jQuery 任务,您可以只返回其结果值,而不是创建自己的延迟对象:
editor = {
setSource: function() {
return $.get({
url: "myurl.com/mypage",
data: $("#myform").serialize()
});
}
}
$.when(editor.setSource()).then(function() {
console.log("Editor is done!");
});
确保查看如何解决或拒绝延迟对象,以及如何处理这些对象。