Javascript 等待带有参数数量的获取 GET 请求

Javascript await fetch GET request with number of params

React JSX 项目。 我正在尝试使用参数数量执行 await fetch GET 请求,失败并出现 Uncaught SyntaxError: Unexpected identifier 错误。 使用 Postman 执行相同的请求时,它工作正常。

我遇到了一些语法问题。我做错了什么?

首先,我将 uri 初始化为某个适当的值。

其次,我正在准备 GET 选项:

var options = (payload) => {
  return {
    method: 'GET',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json'
    },
    param: JSON.stringify(payload) //payload is {domainName: "idoidoido.info"}
  };
};

然后,等待获取:

  const response = await fetch(uri, options(param));

而且,它因 Uncaught SyntaxError: Unexpected identifier 错误而失败...

嗯,首先,我希望你使用的是像 BabelJS 这样的转译器,否则目前 99% 的目标都会失败。

您的代码看起来不错。由于 fetch returns 一个 Promise,await 可以处理它。但是您必须确保您的 await 语句始终位于 async function 声明中。否则会向您抛出错误。

因此请确保您的呼叫线路具有类似

的结构
async function getData( uri, options ) {
    const response = await fetch(uri, options);
}

我假设 fetch 的第二个参数接受一个对象,但是你的 options 是一个函数,必须用有效负载调用它,所以我认为你的代码应该是

const response = await fetch(uri, options(somePayload));

成功解决了这个问题。看起来查询参数不能成为获取 GET 请求的一部分。

通过预先准备请求 URL 和 URI.js 解决了这个问题。

所以,选项:

const options = () => {
  return {
    method: 'GET',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json'
    },
    credentials: 'same-origin'
  };
};

然后,等待获取:

  const URI = require('urijs');

  const request = new URI(uri).addSearch(params).toString();
  const response = await fetch(uri, options());

addSearch(params) 将参数很好地附加到 url:

URI("?hello=world")
    .addSearch("hello", "mars")
        // -> ?hello=world&hello=mars
    .addSearch({ foo: ["bar", "baz"] })
        // -> ?hello=world&hello=mars&foo=bar&foo=baz