我正在寻找通过promises返回的对象,我希望在执行另一个函数之前确保一个异步函数完全完成。
$.when(firstFunction()).done(secondFunction());
是这样的吗?
答案 0 :(得分:2)
是的,但是因为普通函数不返回延迟对象,所以你需要自己创建延迟对象。
var dfd = new $.Deferred;
dfd.done(secondFunction);
firstFunction();
...然后在适当的时候firstFunction()
解析dfd
(通过dfd.resolve()
)。因此,如果firstFunction
包含一个AJAX请求,那么它可能如下所示:
function firstFunction() {
$.get('some/file.txt').done(function() { dfd.resolve(); });
}