我有这个功能:
export const createUser = (email, password) =>
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(res => console.log(res))
.catch(error => {
console.log(error)
return error
});
我将此函数导入到我的React组件中,如果抛出错误,则将消息设置为其状态:
const process = createUser(email, password)
console.log(process)
但是上面记录了功能的全部详细信息。我试图抓住前端,在将错误放入导出函数的括号中的同时获取process.error
,并尝试以某种方式获取消息:process.A.i.L.message
,但没有任何效果。如何解决这个问题?
答案 0 :(得分:1)
由于createUserWithEmailAndPassword
是异步的,因此您应该返回Promise
而不是从.catch()
返回结果。我尚未测试该解决方案,但您应该可以执行以下操作:
// definition
function createUser(email,password) {
return new Promise((resolve, reject) => {
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(res => resolve(res))
.catch(error => {
console.log(error)
reject(error)
})
})
}
// when you are calling the function
createUser(email, password)
.then(process => console.log(process))
.catch(err => console.log(err))