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
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