gpt4 book ai didi

javascript - 使用 jQuery Deferred 多次发布表单

转载 作者:行者123 更新时间:2023-11-30 10:41:28 25 4
gpt4 key购买 nike

最近我一直在测试在 jQuery 中使用 $.Deferred() 并得到一个问题。虽然 deferred 和 promises 对于只打算运行一次的 ajaxcalls 非常有用,但我还有一个用于添加新用户的表单,这些用户使用 ajax 发布的帖子需要多次运行。现在这与延迟/ promise 的二进制(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
});

最佳答案

以这种方式使用延迟是没有意义的。一个 deferred 代表一个 Action ;您不能将其用作事件发射器。当您开始异步操作时使用延迟,并希望在该操作成功或失败时执行某些操作。

$.post() 返回一个 promise(实际上它返回一个 jqXHR 实例,然而它实现了 promise 接口(interface)),所以你可以做 $.post(...)。失败(处理失败)。完成(处理成功)。但是您不能在每次发生某些事情时都使用 deferred 来运行一些代码。

关于javascript - 使用 jQuery Deferred 多次发布表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10804817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com