gpt4 book ai didi

javascript - 如何使用确认警报并返回 AJAX promise ?

转载 作者:行者123 更新时间:2023-11-30 08:33:33 26 4
gpt4 key购买 nike

我有一个返回 AJAX promise 的现有函数。我想更新此函数以在运行 AJAX 调用之前显示确认警报,但代码的其他部分使用此函数并且已经在期待一个 promise 。

这是我的原始函数的样子:

function doTheDeed() {
return $.ajax({
url: '/api/delete/123',
method: 'POST'
}).done(function () {
alert('The deed is done.');
});
}

doTheDeed().done(function {} { /*Do something else*/ });

现在我想在运行 AJAX 调用之前与用户确认。如何在等待用户确认或取消时维护返回 promise 的API协议(protocol)?

function doTheDeed() {
bootbox.confirm('Are you sure?', function (result) {
if (result) {
// Too late to return a promise, promise should've been returned a long time ago
return $.ajax({
url: '/api/delete/123',
method: 'POST'
}).done(function () {
alert('The deed is done.');
});
} else {
//return what??
}
});
}

doTheDeed().done(function {} { /*Do something else*/ });

我是否需要根据用户的响应有条件地返回不同的 promise ?

最佳答案

您可以使用 jQuery 的 Deferreds 吗?

function doTheDeed() {
var def = $.Deferred();

bootbox.confirm('Are you sure?', def.resolve);

return def.promise().then(function(result) {
return result ? $.post('/api/delete/123') : "no go";
});
}

doTheDeed().done(function (data) {
if (data == 'no go') {
// user declined
} else {
// item deleted
}
}).fail(function(err) {
// something failed
});

关于javascript - 如何使用确认警报并返回 AJAX promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453685/

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