gpt4 book ai didi

javascript - 在 jquery 异步 POST 调用中使用 deferred

转载 作者:行者123 更新时间:2023-12-03 06:23:53 26 4
gpt4 key购买 nike

我有一个包含此事件的按钮:

$("#getSensorsObs").click(function (e) {
e.preventDefault();
postCallOne();
postCallTwo();
});

我希望在 postCallOne 成功完成第一个调用时触发 postCallTwo

function postCallOne() {
setWait();
//do something

return $.post(ADDRESS, {fieldONE : fieldOneVal })
.done(function (data) {
console.log("RESPONSE SUCCESS ");
// do something

}).error(function(x, t, m) {
alert(x + ' ' + t + ' ' + m);
}
}).then(function (resp) {
return $.Deferred(function(def){
def.resolveWith({},[resp == 1,valueSelected]);
}).promise();
});

这是第二个函数:

function postCallTwo() {
setWait();
//do something

return $.post(ADDRESS2, {fieldONE : fieldOneVal })
.done(function (data) {
console.log("RESPONSE SUCCESS ");
// do something

}).error(function(x, t, m) {
alert(x + ' ' + t + ' ' + m);
}
});
});

我尝试过:

  $("#button").click(function (e) {
e.preventDefault();
postCallOne.then( function(){postCallTwo();});

});

但是我返回了 postCallOne.done 不是一个函数。

我不太了解Deferred,谁能帮助我?

非常感谢。

最佳答案

你需要这样调用它:

$("#button").click(function (e) {
e.preventDefault();
postCallOne().then(function() {postCallTwo()};);

});

您编写的方式的问题是对 postCallTwo 的调用将在 postCallOne 解决延迟之前进行。您需要等待 postCallOne 解析,然后在 postCallOne 成功时链接 postCallTwo。这就是延期存在的原因。

关于javascript - 在 jquery 异步 POST 调用中使用 deferred,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741335/

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