我是新手使用jQuery延迟以及jQuery本身。我想要做的是调用外部函数。如果调用成功,我想要异步调用另外两个函数。所有这些调用都是我们控制下的javascript库函数。每个格式都是:
伪代码:
function <libraryFunction>(data) {
var deferred = $.Deferred();
$.ajax({
type: "POST",
url: url
data: app.AddAntiForgeryToken({
.
.
.
}),
dataType: 'json'
}).done(function (result) {
if (result.success === false) {
deferred.reject({
.
.
.
});
} else {
deferred.resolve({
.
.
.
});
}
});
return deferred.promise();
}
我为实现调用这些函数而编写的代码如下:
代码:
var deferred = $.Deferred(),
promise = deferred.promise();
promise
.then(lib.function1)
.fail(function (value) {
.
.
.
})
.done(function (results) {
var deferred = $.Deferred(),
promise = deferred.promise();
promise
$.when(promise.then(lib.function2), promise.then(lib.function3))
.done(function (r1, r2) {
.
.
.
})
.fail(function (r1, r2) {
.
.
.
})
deferred.resolve(
{
.
.
.
})
此代码有效,但我并不觉得我正在使用jQuery正确延迟,特别是在&#39; $。当&#39;。这是正确的,还是有更好的方法来做到这一点?