我最近在 jQuery 中使用 $.Deferred() 进行了一些测试并得到了一个问题。虽然 deferred 和 promise 对于只打算运行一次的 ajaxcall 来说非常有用,但我也有一个表单用于添加需要多次运行 ajax 的新用户。现在这会随着延迟/承诺的二进制(ish)状态而崩溃,因为一旦它们被解决或拒绝,它将保持该状态。所以我的问题是:
-我可以将 deferred 用于将被多次调用的任务吗?- 如果可能,是否建议为此使用 deferred 或者我应该坚持使用旧方法,只使用 $.ajax 的成功/错误回调?
这是我为发布表单而收集的一些代码,一次效果很好,但不是多次。
var submittingUser = new $.Deferred();
var savingUser = submittingUser.pipe(function(data) {
return $.post('ajax.php', data);
});
$("#add_new_user").click(function() {
var data = $("#add_user_form").serialize();
submittingUser.resolve(data);
return false;
});
savingUser.then(function() {
//Success
}, function() {
//Failed
});