为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 then 方法中调用函数

无法在 then 方法中调用函数

不负相思意 2022-12-09 13:51:08
我试图在另一个函数中调用两个函数公共服务组件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方法返回和链接,但仍然无法正常工作,我错过了什么?
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

尝试以下操作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 中


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.");

    })

}


检查控制台中是否有任何错误。如果没有,则两个调用都通过。


查看完整回答
反对 回复 2022-12-09
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

尝试使用此代码。


submits(e) { 

    e.preventDefault();

    const { user} = this.state;

        

    commonService.AddEmail(user)

    .then(() => commonService.createUsers(user))

    .then(() =>{//success})

    .catch(err=> console.log(err));

}


查看完整回答
反对 回复 2022-12-09
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

return auth.createUserWithEmailAndPassword(user.email,user.password);

返回函数必须是使用.then的 javascript Promise

您可以尝试console.log(auth.createUserWithEmailAndPassword)它是否是 Promise。


查看完整回答
反对 回复 2022-12-09
  • 3 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信