2017-02-17 31 views
20

我竭力要弄清楚的问题有以下语法等待是异步函数内部保留字错误

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); 
    } 
    }; 

我不断收到错误说

等待被保留字

但在异步函数内是否合法?

调度位从react-thunk

+1

它不在异步函数中。它在以'(dispatch)=>'开头的函数中,而且不是异步的。为什么你有'sendVerificationEmail'返回另一个函数而不是执行一些操作? – JLRishe

+1

@JLRishe确实需要'async(dispatch)=>'您可以将其作为答案发布,我需要返回以便获得调度 – Ilja

+0

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

回答

37

来为了使用await,功能直接封闭它需要异步。根据您的意见,增加async到内部功能修复它,所以我会张贴在这里:

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); 
    } 
    }; 

可能的话,你可以从外部函数删除async因为它不包含任何异步操作,但这取决于该sendVerificationEmail的调用者是否期望sendVerificationEmail是异步的。

+2

事实上,不需要外部异步 – Ilja