Bla*_*349 8 javascript ecmascript-6 fetch-api
我有点难过.我忘记了怎么做.我有一个名为ext.get()的函数,它接受url的参数.它从网址获取响应.ext.get()函数用于将响应作为json返回.我不认为这样做.
ext.get = (url) => {
let myHeaders = new Headers();
let options = {
method: 'GET',
headers: myHeaders,
mode: 'cors'
};
//fetch get
fetch(url, options).then(response => {
console.log(JSON.stringify(response.json()))
return JSON.stringify(response.json())
});
};
Run Code Online (Sandbox Code Playgroud)
如果您需要响应作为JSON - 并且response.json()有效地考虑相同response.text().then(txt => JSON.parse(txt))
return fetch(url, options).then(response => response.text());
Run Code Online (Sandbox Code Playgroud)
所以,完整的功能将是
ext.get = (url) => {
let myHeaders = new Headers();
let options = {
method: 'GET',
headers: myHeaders,
mode: 'cors'
};
return fetch(url, options).then(response => response.text());
};
Run Code Online (Sandbox Code Playgroud)
那样你基本上不做JSON.stringify(JSON.parse(json))......这就是json
但是,我怀疑你想要一个普通的'javascript对象
ext.get = (url) => {
let myHeaders = new Headers();
let options = {
method: 'GET',
headers: myHeaders,
mode: 'cors'
};
return fetch(url, options).then(response => response.json());
};
Run Code Online (Sandbox Code Playgroud)
然后你会用它作为:
ext.get('url').then(result => {
// result is the parsed JSON - i.e. a plan ol' javascript object
});
Run Code Online (Sandbox Code Playgroud)
您正在使用fetch,这是一个异步 API。这意味着您的函数也必须是异步的——即它必须返回一个Promise. (你可以通过回调来做到这一点,但这是 2017 年......)
您无法从该函数返回 JSON,因为该函数将在服务器响应可用之前返回。您必须返回一个 Promise 并在调用代码中使用then(或)来处理它。await
fetch在这里,最简单、最好的方法就是在转换后返回调用结果。您不想解析 JSON,而是希望将其作为字符串返回。这需要response.text()调用:
ext.get = (url) => {
let myHeaders = new Headers();
let options = {
method: 'GET',
headers: myHeaders,
mode: 'cors'
};
//fetch get
return fetch(url, options).then(response => response.text());
};
Run Code Online (Sandbox Code Playgroud)
和你的调用代码:
ext.get('http://example.com').then((response) => {
console.log(response); // or whatever
});
Run Code Online (Sandbox Code Playgroud)
或与await:
let response = await ext.get("http://example.com");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15770 次 |
| 最近记录: |