javascript - 无法在 then 方法中调用函数
问题描述
我试图在另一个中调用两个函数
公共服务组件
function AddEmail(user) {
return auth.createUserWithEmailAndPassword(user.email,user.password);
//createUsers(user) this way of calling is working, but i don't want to invoke like this...
}
function createUsers(user) {
return db.collection("users").add({
firstName: user.firstName,
lastName: user.lastName,
address: user.address,
phoneNumber: user.phoneNumber,
email: user.email,
role: user.role,
});
}
注册组件
submits(e) {
e.preventDefault();
const { user} = this.state;
commonService.AddEmail(user)
.then(() => {
commonService.createUsers(user)
.then(() =>{//success})
.catch(err=> console.log(err));
})
.catch(err=> console.log(err));
}
被AddEmail
执行,但不是createUsers
. 我也尝试过通过then方法返回和链接,仍然无法正常工作,我错过了什么?
解决方案
尝试以下操作async / await
。
async submit(e){
e.preventDefault();
const { user} = this.state;
try {
const userEmailAdded = await commonService.AddEmail(user);
const userCreated = await commonService.createUsers(user);
} catch (err) {
console.log(err);
}
}
确保在两个函数调用中都返回一个 Promise。如果返回值不是 Promise,则使用以下代码将其包装在 Promise 中
function AddEmail(user) {
return new Promise((resolve, reject){
const createdUser = auth.createUserWithEmailAndPassword(user.email,user.password);
if(createdUser)
return resolve(createdUser);
else
return reject("Error in creating user.");
})
}
检查控制台中的任何错误。如果没有,两个调用都通过了。
推荐阅读
- sql - 根据具有相同值的部分的列计数记录
- javascript - 找不到
- google-apps-script - 在带有 appendRow 的公式中使用 Row()
- linux - 带有 WSL2 的 Docker - 无法连接到 Ubuntu VM 上的 Docker 主机
- angular - 出现 API 密钥错误时是否可以隐藏 Google Places API 错误框?
- python - 如何查找特定标点符号后的数字
- oracle-sqldeveloper - sql developer sqldeveloper-21.2.1.204.1703-x64 崩溃 - 错误 126
- c# - C# TransactionScope 和新实体
- r - 通过模式匹配和删除字符串的模式重复行
- json - Gmail Rest API json 发送消息