我正在尝试使用jQuery (当前版本3.2.1)学习promises。
我只想在post请求成功后运行get请求,但我当前的代码无法工作。提交数据可以正常工作,但get请求不会运行。我不确定如何将这两个操作链接起来?
$('#newPoiForm').submit(function (e) { // handle the submit event
e.preventDefault();
let formData = $(this).serialize();
console.log(formData);
$.post({
type: 'POST',
url: '/api/pois/',
data: formData
}).done(function(){
console.log('new asset submitted')
return $.get({url: '/api/pois/last'})
}).then(function (data) {
// do stuff
})
发布于 2018-06-19 03:55:52
这里的问题是在第一个回调中使用done()
--这是一个遗留的jQuery问题,不会链接承诺。如果您将其更改为then()
,它应该可以正常工作:
$.post({
type: 'POST',
url: '/api/pois/',
data: formData
}).then(function(){ // don't use done()
console.log('new asset submitted')
return $.get({url: '/api/pois/last'})
}).then(function (data) {
// do stuff
});
有关更多详细信息,请参阅此答案:jQuery deferreds and promises - .then() vs .done()
https://stackoverflow.com/questions/50916572
复制相似问题