javascript - Angular2 对异步/等待的 promise

标签 javascript angular asynchronous

如何转换此代码 (Promise):

registerUser(formData) {
    firebase.auth().createUserWithEmailAndPassword(formData.email,formData.passwords.password)
            .then((user) => {
                firebase.database().ref(`/users/${user.uid}`).set({
                    id: user.uid,
                    email: formData.email
                })
                this.routing.navigate(['/login']);
            }).catch((error) => {
                console.log(error); 
            })
}

进入这个(异步/等待):

async registerUser(formData){
    try{
        await firebase.auth().createUserWithEmailAndPassword(formData.email,formData.passwords.password);
        firebase.database().ref(`/users/${user.uid}`)
            .set({id: user.uid,email: formData.email});
        this.routing.navigate(['/login']);
        return true;
    }catch(error){
        return false;
    }
}

如何获取user.uid(即注册用户uid)?在 promise 中它是如此简单,因为我只需要将参数(用户)传递给 then。 谢谢,求助:)

最佳答案

How can I get user.uid...

user是由await表达式返回的,所以添加let user =(或const user =)在它前面:

async registerUser(formData){
    try{
        const user = await firebase.auth().createUserWithEmailAndPassword(formData.email,formData.passwords.password);
    //  ^^^^^^^^^^^^^
        firebase.database().ref(`/users/${user.uid}`)
            .set({id: user.uid,email: formData.email});
        this.routing.navigate(['/login']);
        return true;
    }catch(error){
        return false;
    }
}

关于javascript - Angular2 对异步/等待的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41241759/

相关文章:

asp.net - js在页面内部工作但不在代码后面

javascript - Angular中动态内容的国际化?

c# - 将 IEnumerable.Aggregate 与异步调用结合使用

.net - 如何在 .net 内存转储中列出正在运行的任务

javascript - 使用POST将JS值传递给PHP(无需提交和刷新)

javascript - 选择日期后日期选择器自动关闭不起作用

angular - serviceWorker 删除 Origin 请求 header

c# - 即使使用 ConfigureAwait(false),在 WebAPI 中同步调用异步方法也会死锁

javascript - 从 AJAX 中的 onreadystatechange 事件返回值

javascript - 没有导出成员 'ROUTER_DIRECTIVES' 。它的替代品是什么?