2017-02-17 19 views
20

walczę, aby dowiedzieć się problem z następującą składnięOczekujcie jest zarezerwowanym błąd słowo wewnątrz funkcji asynchronicznej

export const sendVerificationEmail = async() => 
    (dispatch) => { 
    try { 
     dispatch({ type: EMAIL_FETCHING, payload: true }); 
     await Auth.sendEmailVerification(); 
     dispatch({ type: EMAIL_FETCHING, payload: false })) 
    } catch (error) { 
     dispatch({ type: EMAIL_FETCHING, payload: false }); 
     throw new Error(error); 
    } 
    }; 

Wciąż dostaję błąd mówiąc

czekają na to słowo zarezerwowane

, ale czy nie jest to legalne w ramach funkcji asynchronicznej?

Wysyłka bit pochodzi react-thunk biblioteki

+1

To nie jest funkcja asynchroniczna. Jest to funkcja zaczynająca się od '(dispatch) =>', a to nie jest asynchroniczne. Dlaczego zamiast funkcji "sendVerificationEmail" zwracana jest inna funkcja? – JLRishe

+1

@JLRishe rzeczywiście musi być 'async (dispatch) =>' możesz opublikować to jako odpowiedź, muszę go zwrócić, aby uzyskać dostęp do wysyłki – Ilja

+0

http://www.2ality.com/2016/10 /async-function-tips.html –

Odpowiedz

37

Aby korzystać await, funkcja bezpośrednio załączając musi być asynchroniczny. Zgodnie z Twojego komentarza, dodając async do funkcji wewnętrznej rozwiązuje go, więc będę pisać, że tutaj:

export const sendVerificationEmail = async() => 
    async (dispatch) => { 
    try { 
     dispatch({ type: EMAIL_FETCHING, payload: true }); 
     await Auth.sendEmailVerification(); 
     dispatch({ type: EMAIL_FETCHING, payload: false })) 
    } catch (error) { 
     dispatch({ type: EMAIL_FETCHING, payload: false }); 
     throw new Error(error); 
    } 
    }; 

Ewentualnie można usunąć async z funkcji zewnętrznej, ponieważ nie zawiera żadnych operacji asynchronicznych, ale zależy to od tego, czy wywołujący ten numer sendVerificationEmail oczekuje, że sendVerificationEmail będzie asynchroniczny, czy też nie.

+2

Rzeczywiście ten zewnętrzny asynchronizm nie jest potrzebny – Ilja

Powiązane problemy