我正在尝试使用jQuery学习promises(当前版本3.2.1。)
我想在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
})
答案 0 :(得分:0)
这里的问题是使用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()