gpt4 book ai didi

javascript - 如何避免带有 promise 的回调的嵌套结构? [完成的]

转载 作者:行者123 更新时间:2023-11-30 11:26:19 26 4
gpt4 key购买 nike

我正在使用 promises 来避免回调创建的嵌套结构。

但是在这段代码中我仍然有一些嵌套。是不是我做错了什么,或者在这种情况下这是不可避免的?

在这种情况下,我想检查配置文件是否存在,如果不存在,我想创建它。

  DB.getProfile(id_google).then((resGet) => {
if(!resGet[0]){
console.log('PROFILE - NOT FOUND - MUST CREATE');

DB.createProfile(id_google, email, name, pic_url).then((resCreate)=>{
console.log('PROFILE CREATED');
}).catch((error) => {
console.log('ERROR - createProfile() Failed: ', error);
});

} else {
console.log('PROFILE FOUND LOCALLY');
console.log(resGet[0]);
return done(null, resGet[0])
}
}).catch((error) => {
console.log('ERROR - getOrCreateProfile() Failed: ', error);
});
};

最佳答案

您可以使用多个 then 返回和链接

DB.getProfile(id_google)
.then((resGet) => {
if (!resGot[0]) {
return DB.createProfile(id_google, email, name, pic_url);
}
return resGot[0];
})
.then((res) => {
callback(null, res)
})
.catch((error) => {
console.log('ERROR - getOrCreateProfile() Failed: ', error);
});

如果 resGot[0] 存在,则返回它,在第二个 then 中,变量 res 就是那个值。如果没有,则返回 createProfile 的 promise ,并且 res 的值是函数返回的值

关于javascript - 如何避免带有 promise 的回调的嵌套结构? [完成的],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47917933/

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