获取API,在useFinalURL

时间:2017-10-04 12:00:46

标签: javascript fetch-api

有没有办法在fetch.Response重定向后重新发布我的formData?

我的第一个请求(我发送我的帖子数据)得到301代码,这没关系 - 但如果下一个(或下一个)响应是useFinalURL,我怎样才能重新发送我的后请求?

示例:

fetch(url, {
  method: 'post',
  body: formData,
  redirect: 'follow'
})
.then(function(response) {
  if (response.useFinalURL === true){ resendFetchPost }
})

希望有人可以给我一个提示

1 个答案:

答案 0 :(得分:1)

当您想基于条件检查重做某些内容时,最简单的解决方案通常是递归函数:

const autoPost = (url, formData) => {
  return fetch(url, {
    method: 'POST',
    body: formData,
    redirect: 'follow'
  }).then(resp => {
    return resp.useFinalURL ? 
      autoPost(resp.url, formData) : // resend to final url
      resp.text(); // could sub resp.json() as approp.
  });
};

添加了奖励,因为fetch是异步的,你不会得到无限的递归错误或无休止地阻塞。