verifyUser
जो verifyUserSignInSuccess
जो userSnapshot
जो user
रेक्टनेटिव में, जो इन दोनों में Async Await विधि बेहतर है और क्यों?
यहाँ इन दो कार्यों में इंतजार कर रहा है, जो शुद्धता, स्मृति, ReactNative अनुप्रयोग के लिए समय के संदर्भ में और अधिक प्रभावी हो जाएगा इंतजार कर रहा है इंतजार कर रहा है:
export function verifyUser() {
return async dispatch => {
dispatch(verifyUserSignInRequest());
try {
const user = await firebase.auth().onAuthStateChanged();
if (user) {
let userRef = "/user/" + user.uid;
const userSnapshot = await firebase
.database()
.ref(userRef)
.once("value");
dispatch(verifyUserSignInSuccess(userSnapshot.val()));
} else {
dispatch(verifyUserSignInFailure(USER_NOT_SIGNED_IN));
}
} catch (e) {
dispatch(verifyUserSignInFailure(e.message));
}
};
}
या नेस्टेड Async प्रतीक्षा करें:
export function verifyUser() {
return async dispatch => {
dispatch(verifyUserSignInRequest());
try {
await firebase.auth().onAuthStateChanged(async user => {
if (user) {
let userRef = "/user/" + user.uid;
await firebase
.database()
.ref(userRef)
.once("value")
.then(() => {
dispatch(verifyUserSignInSuccess(userSnapshot.val()));
});
} else {
dispatch(verifyUserSignInFailure(USER_NOT_SIGNED_IN));
}
});
} catch (e) {
dispatch(verifyUserSignInFailure(e.message));
}
};
}
मुझे लगता है कि पहला विकल्प बेहतर है, क्योंकि पढ़ने में आसान है। मैं async/प्रतीक्षा का उपयोग नहीं करता, बल्कि इसके बजाय वादा करता हूं। दूसरा एक एसिंक/प्रतीक्षा वादा का मिश्रण है जो इसे पढ़ने के लिए थोड़ा कठिन बनाता है। मेरी राय है, मैं श्रृंखला को साफ और अच्छा रखने का वचन दूंगा :) – parohy
पहला 'अधिक (उपयोगकर्ता)/अन्य' ब्लॉक से बाहर है, और अधिक पठनीय है। – Damon