如何操纵 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};
});

_