如何操纵 axios 响应和 return 承诺?
How to manipulate an axios response and return a promise?
使用“axios”和 return 另一个 async
请求的 return 值的正确操作方法是什么Promise
?
这个:
return axios.get('/home.json')
.then(({ data, ...res }) =>
new Promise({
data: data.json(),
...res
})
)
或
return new Promise(() => {
const { data, ...res } = await axios.get('/home.json')
return {
data: data.json(),
...res
}
})
...或以上的 none?
我觉得最好的方法是在 try-catch
块中使用 async-await
示例代码:
const getApi = async() => {
try{
const {data, ...res} = await axios.get('/home.json')
// this data is already in json usable format
}catch(e){
console.log('This error occurred',e)
}
}
由于 axios.get()
已经 return 是一个承诺,您可以只在承诺链上构建并且 return 您在链末端的最终价值,它将成为已解决的价值将返回给调用者的整个承诺链的数量:
return axios.get('/home.json').then(data) =>
// build whatever return value you want here and just return it
// it will be the resolved value of the parent promise/chain
// If you want to pack it into an object, you can do so here
return {data: data};
});
如果您在解包数据和构建最终结果时需要一些其他异步操作,则只需将该异步操作添加到上述承诺链中(return从链内获取承诺)。
P.S。我不明白你为什么这么想 .then(({ data, ...res })
是 axios 承诺结果的正确格式。尽我所能从文档中看出,事实并非如此。它解析为一个值,即请求的结果。另外,axios 没有 .json()
。它已经为您解析了 JSON 个结果(与 fetch()
不同)。
如果您希望它与 fetch()
一起工作,您必须单独读取和解析 json,您可以这样做:
return fetch('/home.json').then(response) =>
return response.json();
}).then(result => {
// create whatever final result value you want and return it
return {data: result};
});
_
使用“axios”和 return 另一个 async
请求的 return 值的正确操作方法是什么Promise
?
这个:
return axios.get('/home.json')
.then(({ data, ...res }) =>
new Promise({
data: data.json(),
...res
})
)
或
return new Promise(() => {
const { data, ...res } = await axios.get('/home.json')
return {
data: data.json(),
...res
}
})
...或以上的 none?
我觉得最好的方法是在 try-catch
块中使用 async-await
示例代码:
const getApi = async() => {
try{
const {data, ...res} = await axios.get('/home.json')
// this data is already in json usable format
}catch(e){
console.log('This error occurred',e)
}
}
由于 axios.get()
已经 return 是一个承诺,您可以只在承诺链上构建并且 return 您在链末端的最终价值,它将成为已解决的价值将返回给调用者的整个承诺链的数量:
return axios.get('/home.json').then(data) =>
// build whatever return value you want here and just return it
// it will be the resolved value of the parent promise/chain
// If you want to pack it into an object, you can do so here
return {data: data};
});
如果您在解包数据和构建最终结果时需要一些其他异步操作,则只需将该异步操作添加到上述承诺链中(return从链内获取承诺)。
P.S。我不明白你为什么这么想 .then(({ data, ...res })
是 axios 承诺结果的正确格式。尽我所能从文档中看出,事实并非如此。它解析为一个值,即请求的结果。另外,axios 没有 .json()
。它已经为您解析了 JSON 个结果(与 fetch()
不同)。
如果您希望它与 fetch()
一起工作,您必须单独读取和解析 json,您可以这样做:
return fetch('/home.json').then(response) =>
return response.json();
}).then(result => {
// create whatever final result value you want and return it
return {data: result};
});
_