我正在寻找通过 Promise 返回对象,我希望确保一个异步函数在执行另一个函数之前完全完成。
$.when(firstFunction()).done(secondFunction());
这样的事情可能吗?
最佳答案
是的,但由于普通函数不返回延迟对象,因此您需要自己创建延迟对象。
var dfd = new $.Deferred;
dfd.done(secondFunction);
firstFunction();
...然后让 firstFunction()
在适当的点解析 dfd
(通过 dfd.resolve()
)。因此,如果 firstFunction
包含 AJAX 请求,比如说,它可能如下所示:
function firstFunction() {
$.get('some/file.txt').done(function() { dfd.resolve(); });
}
关于javascript - Jquery deferred - 在前一个函数完成之前推迟函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199244/