我正试图弄清楚如何将两个不同的返回(异步/同步(从如下函数中混合:
getVideo(itemID){
let data = localStorage.getItem(itemID)
if ( data ) {
return data;
} else{
axios.get('http://...')
}
}
正如你所看到的,我正在使用React来处理我的请求,我的目标是从缓存中获取数据,而不是让它在线。现在我的函数有一个特殊性,那就是,我使用2个嵌套的axios.get('http://...’(。
所以我的设想是:
- GET item online
-- GET SubItem online
-- OR get SubItem from cache if exists
---- Get SubSubItem online
---- Or get SubSubItem from cache if exists
------ Update State
我希望能够将我的GET调用放入一个函数中,但不确定如何做到这一点并同时处理不同的返回调用。
有人知道吗?
没有办法混合同步和异步,但您总是可以将同步转换为异步而不会出现问题:
getVideo = async (itemID) => {
let data = localStorage.getItem(itemID)
if ( data ) {
return data;
} else {
return await axios.get('http://...')
}
}
是的,您可以使用嵌套函数来实现。将您的主函数转换为async&你可以走了。参见以下实现:
async function getVideo(itemID){
let data = localStorage.getItem(itemID)
if ( data ) {
return data;
} else{
await axios.get('http://...', async r => {// Async callback to use handle another async request
console.log(`Axios response: ${r}`)
// do another async stuff here in the same way
})
}
}