jquery promise,成功发布请求后链接一个get请求

时间:2018-06-18 19:52:29

标签: javascript jquery promise

我正在尝试使用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
  })

1 个答案:

答案 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()

相关问题