Je ne peux pas faire ce travail ... il est dit: attendre est un mot réservé. Oui, bien sûr que c'est ... et j'aimerais utiliser :)
Qu'est-ce qui ne va pas ?
export const loginWithToken = async () => {
return dispatch => {
dispatch({type: SESSION_LOGIN_IN_PROGRESS, payload: true})
let storedData = await ReadFromLocalDB('user')
console.log(storedData)
if (!storedData) {
invalidToken(null, dispatch)
}
else {
storedData = JSON.parse(storedData)
SessionLoginWithToken(storedData.session.token).then(res => {
console.log(res)
loginSuccessfully(res, dispatch, true)
})
}
}
}
Mon ReadFromLocalDB est la suivante:
export const ReadFromLocalDB = async (key) => {
return AsyncStorage.getItem(key)
}
c'est rendre une promesse
return dispatch => {...}
doit également être async
Je crois. À l'heure actuelle, seule la fonction de niveau supérieur est async
, pas celle imbriquée.
// This function is async
export const loginWithToken = async () => {
// This one is not though which means it can't use await inside
// return dispatch => {
// Instead it should likely be:
return async dispatch => {
dispatch({type: SESSION_LOGIN_IN_PROGRESS, payload: true})
let storedData = await ReadFromLocalDB('user')
console.log(storedData)
if (!storedData) {
invalidToken(null, dispatch)
}
else {
storedData = JSON.parse(storedData)
SessionLoginWithToken(storedData.session.token).then(res => {
console.log(res)
loginSuccessfully(res, dispatch, true)
})
}
}
}
On dirait que c'est parce que la fonction que vous retournez (dispatch => {...}
) n'est pas une fonction asynchrone, vous ne pouvez donc pas utiliser await
dans celle-ci. Vous devez faire quelque chose comme return async dispatch => {...}
Avec exportation et importation, il est suggéré de suivre le modèle suivant:
Pour définir et exporter une fonction dans le fichier myFile.js:
export const request = async (arg1, arg2) => {
try {
const response = await fetch('https://api.com/values/?arg1=' + arg1 + '&arg2=' arg2);
const json = await response.json();
console.log(json);
}
catch (e) {
console.log('We have the error', e);
}
}
Pour importer et appliquer la fonction:
import {request} from './myFile'
request();