Await async फ़ंक्शन के अंदर एक आरक्षित शब्द त्रुटि है


88

मैं निम्नलिखित सिंटैक्स के साथ समस्या का पता लगाने के लिए संघर्ष कर रहा हूं:

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

मुझे यह कहते हुए त्रुटि हो रही है:

प्रतीक्षित एक आरक्षित शब्द है

... लेकिन यह एक async फ़ंक्शन के भीतर कानूनी नहीं है?

प्रेषण बिट प्रतिक्रिया-थंक पुस्तकालय से आ रही है ।


6
यह एक async फ़ंक्शन के अंदर नहीं है। यह उस फ़ंक्शन के अंदर है जो इसके साथ शुरू होता है (dispatch) => , और यह async नहीं है। आपके पास sendVerificationEmailकुछ कार्य करने के बजाय एक और फ़ंक्शन क्यों लौट रहा है?
JLRishe

3
@JLRhehe वास्तव में यह होना चाहिए async (dispatch) =>कि आप एक उत्तर के रूप में पोस्ट कर सकते हैं, मुझे प्रेषण के लिए पहुँच प्राप्त करने के लिए इसे वापस करने की आवश्यकता है
Ilja

जवाबों:


147

उपयोग करने के लिए await, इसे सीधे संलग्न करने वाले फ़ंक्शन को async करने की आवश्यकता है। आपकी टिप्पणी के अनुसार, 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है या नहीं।


8
वास्तव में उस बाहरी एसिंक्स की आवश्यकता नहीं है
इल्जा

1
आह! धन्यवाद! मैं एक ही समस्या के अंदर एक ही था ... क्रूर :)
निक स्टील

Ditto यहाँ एक forEach और फिर एक async फ़ंक्शन में एम्बेडेड प्रतीक्षा का उपयोग करने के लिए है।
Opus1217
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.