【发布时间】:2015-12-24 13:39:09
【问题描述】:
我有一个返回 AJAX 承诺的现有函数。我想更新此函数以在运行 AJAX 调用之前显示确认警报,但代码的其他部分使用此函数并且已经在期待一个承诺。
这是我原来的函数的样子:
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 协议?
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*/ });
我是否需要根据用户的响应有条件地返回不同的承诺?
【问题讨论】:
-
当你使用 jquery 时,deferred object 应该可以做你想做的事
-
对
bootbox.confirm调用的结果做出承诺(这似乎也是异步的,你不能只在回调中使用return)。然后将它与 ajax 调用一起chain。
标签: javascript jquery ajax promise