如何使用导入异步功能?
How use import async function?
我制作了一个带有一些 Utils 函数的 Storage.js
文件。大多数情况下,我是这样使用的:
async someFunction()=>{ let foo = await getOnDevice(someName)}
但就我而言,语法有问题
import {AsyncStorage} from 'react-native'
export const saveOnDevice = async (name, data) => {
try {
if (data !== null && data !== undefined) {
await AsyncStorage.setItem(name, JSON.stringify(data));
}
} catch (error) {
console.log(error)
}
};
export const getOnDevice = async (name) => {
try {
const data = await AsyncStorage.getItem(name);
if (data !== null && data !== undefined) {
return data
}
} catch (error) {
console.log(error)
}
};
如何在不声明 async
函数的情况下使用它?
import {saveOnDevice} from '../../utils/Storage'
export function fetchUrlWithRedux(url) {
return (dispatch) => {
dispatch(fetchUrlRequest(url));
return fetchUrl(url, dispatch).then(([response, json]) => {
if (response.status === 200) {
saveOnDevice('url', json.data.host);
dispatch(fetchUrlSuccess(json))
}
else {
dispatch(fetchUrlError())
}
}).catch(() => dispatch(fetchUrlError()))
}
}
我的代码有什么问题?
我认为你需要在传递给 .then()
的匿名函数之前添加 async
,并在调用 saveOnDevice()
之前添加 await
:
import {saveOnDevice} from '../../utils/Storage'
export function fetchUrlWithRedux(url) {
return (dispatch) => {
dispatch(fetchUrlRequest(url));
return fetchUrl(url, dispatch).then(async ([response, json]) => {
if (response.status === 200) {
await saveOnDevice('url', json.data.host);
dispatch(fetchUrlSuccess(json))
}
else {
dispatch(fetchUrlError())
}
}).catch(() => dispatch(fetchUrlError()))
}
}
如果您不想在主文件中使用 async/await
,那么您可以使用 promise,如下所示。
saveOnDevice('url', json.data.host).then(() => {
dispatch(fetchUrlSuccess(json))
})
我制作了一个带有一些 Utils 函数的 Storage.js
文件。大多数情况下,我是这样使用的:
async someFunction()=>{ let foo = await getOnDevice(someName)}
但就我而言,语法有问题
import {AsyncStorage} from 'react-native'
export const saveOnDevice = async (name, data) => {
try {
if (data !== null && data !== undefined) {
await AsyncStorage.setItem(name, JSON.stringify(data));
}
} catch (error) {
console.log(error)
}
};
export const getOnDevice = async (name) => {
try {
const data = await AsyncStorage.getItem(name);
if (data !== null && data !== undefined) {
return data
}
} catch (error) {
console.log(error)
}
};
如何在不声明 async
函数的情况下使用它?
import {saveOnDevice} from '../../utils/Storage'
export function fetchUrlWithRedux(url) {
return (dispatch) => {
dispatch(fetchUrlRequest(url));
return fetchUrl(url, dispatch).then(([response, json]) => {
if (response.status === 200) {
saveOnDevice('url', json.data.host);
dispatch(fetchUrlSuccess(json))
}
else {
dispatch(fetchUrlError())
}
}).catch(() => dispatch(fetchUrlError()))
}
}
我的代码有什么问题?
我认为你需要在传递给 .then()
的匿名函数之前添加 async
,并在调用 saveOnDevice()
之前添加 await
:
import {saveOnDevice} from '../../utils/Storage'
export function fetchUrlWithRedux(url) {
return (dispatch) => {
dispatch(fetchUrlRequest(url));
return fetchUrl(url, dispatch).then(async ([response, json]) => {
if (response.status === 200) {
await saveOnDevice('url', json.data.host);
dispatch(fetchUrlSuccess(json))
}
else {
dispatch(fetchUrlError())
}
}).catch(() => dispatch(fetchUrlError()))
}
}
如果您不想在主文件中使用 async/await
,那么您可以使用 promise,如下所示。
saveOnDevice('url', json.data.host).then(() => {
dispatch(fetchUrlSuccess(json))
})