Javascript jquery承诺,在成功发布请求后链接get请求

Javascript jquery承诺,在成功发布请求后链接get请求,javascript,jquery,promise,Javascript,Jquery,Promise,我正在尝试使用jQuery(当前版本3.2.1)学习承诺 我只想在post请求成功后运行get请求,但我当前的代码不起作用。提交数据工作正常,但get请求未运行。 我不知道我如何才能将这两种行为联系起来 $('#newPoiForm').submit(function (e) { // handle the submit event e.preventDefault(); let formData = $(this).serialize(); console.log(formData

我正在尝试使用jQuery(当前版本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
  })

这里的问题是在第一次回调中使用
done()
——这是一个遗留的jQuery,不包含任何承诺。如果将其更改为
,则()
应该可以正常工作:

$.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
});

有关更多详细信息,请参见此答案:

有多种承诺类型<代码>成功(),
错误()
然后()
完成()
,这取决于您需要什么。我会查找api以了解您希望完成的任务。
完成
->
然后
done
只是一个成功的回调,
。然后另一方面,
将管道化返回值并继续链。使用then似乎效果更好。即使第一个承诺失败了,第二个承诺还会运行吗?不会,因为第一个回调到。然后只有在成功时才会被调用。