gpt4 book ai didi

javascript - Firebase.createUser() - 创建返回函数

转载 作者:行者123 更新时间:2023-11-28 18:54:35 27 4
gpt4 key购买 nike

我想在Javascript中创建一个简单的函数,它返回依赖于onComplete调用Firebase.createUser()的结果。

我这样做了:

function createAUser(email, password) {

if (email === "" || password === "") { return false; }

var
onComplete = function (error, userData) {
if (error) {
switch (error.code) {
case "EMAIL_TAKEN":
console.log("The new user account cannot be created because the email is already in use.");
break;
case "INVALID_EMAIL":
console.log("The specified email is not a valid email.");
break;
default:
console.log("Error creating user:", error);
}
return false;
} else {
console.log("Successfully created user account with uid:", userData.uid);
return true;
}
};

MyFirebaseRootRef.createUser({ email: email, password: password}, onComplete);
/* return something here, true/false based on onComplete */
}

或者..还有其他方法可以让我得到我想要的东西吗?我本质上追求的只是找到一种方法,不仅通过console.log()来弄清楚用户的创建是如何进行的。

抱歉,拼写错误/代码错误,感谢所有回复!

编辑:感谢您的所有回复,我现在已经研究了回调和异步内容(例如启动另一个线程,然后执行该函数)。我必须对数据进行一些思考,比如函数中的堆栈数据必须在返回时释放,如何将这些数据跟踪到回调。

无论如何,抱歉重复,再次感谢

最佳答案

您正在处理异步数据。

创建 Firebase 用户的调用通过网络进行,这意味着我们必须耐心等待用户返回。但是,我们不想阻塞我们必须执行其他操作的唯一线程。这意味着调用将在 JavaScript 事件循环中进行,当网络请求完成(并且调用堆栈已清除)时,我们最终将取回数据。

要在代码中优雅地处理这个问题,您可以使用Promise

var user = { email: 'my@email.com', password: 'secret' };
var promise = new Promise() {

function(resolve, reject) {

var ref = new Firebase('<my-firebase-app>');
ref.createUser(user, function(error, authData) {
if (error) {
reject(error);
} else {
resolve(authData);
}
});

}

};

promise
.then(function(authData) {

})
.catch(function(error) {

});

Promise 是现代浏览器原生的,但如果您想支持旧版浏览器,则必须使用 jQuery、Bluebird 或 RSVP 等库。

关于javascript - Firebase.createUser() - 创建返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874908/

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