gpt4 book ai didi

react-native - 在 React Native 中,这两种 Async Await 方法哪个更好,为什么?

转载 作者:行者123 更新时间:2023-12-04 12:27:54 24 4
gpt4 key购买 nike

verifyUser等待 verifyUserSignInSuccess等待 userSnapshot等待 user
在这两个函数中,对于 ReactNative app 来说,在正确性、内存、时间方面会更有效:

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

或者嵌套异步等待:
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/await 或 promise 链接或混合使用哪种方法都只需要相同的时间。

正确性 - 两者在逻辑上都是正确的,并且工作方式相同。但是 async/await 是 JS 的最新补充,用于解决 promise 链接的问题。 Promise 链使代码难以阅读。最好坚持使用 async/await。对于需要并行运行两个异步函数的情况,请使用 await Promise.all()等等。最后,这是您的个人喜好。

内存? - 我不知道

在 github 上免费阅读本书,其中包含有关 promise、异步函数、异步/等待等的详细信息。
https://github.com/getify/You-Dont-Know-JS

关于react-native - 在 React Native 中,这两种 Async Await 方法哪个更好,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47749388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com