Saya berjuang untuk mencari tahu masalah dengan sintaks berikut:
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);
}
};
Saya terus mendapatkan kesalahan yang mengatakan:
menunggu adalah kata yang dipesan
... tapi bukankah legal dalam fungsi async?
Bit pengiriman berasal dari perpustakaan react-thunk .
(dispatch) =>
, dan itu bukan asinkron. Mengapa AndasendVerificationEmail
mengembalikan fungsi lain daripada melakukan beberapa tindakan?async (dispatch) =>
Anda dapat memposting itu sebagai jawaban, saya perlu mengembalikannya untuk mendapatkan akses ke pengirimanJawaban:
Untuk menggunakan
await
, fungsi yang secara langsung melingkupinya harus asinkron. Menurut komentar Anda, menambahkanasync
ke fungsi bagian dalam memperbaiki masalah Anda, jadi saya akan mempostingnya di sini: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); } };
Mungkin, Anda bisa menghapus fungsi
async
dari luar karena tidak berisi operasi asinkron apa pun, tetapi itu akan bergantung pada apakah pemanggilnyasendVerificationEmail
mengharapkansendVerificationEmail
untuk mengembalikan sebuah janji atau tidak.sumber