gpt4 book ai didi

javascript - 在promise中返回callback()和callback()

转载 作者:行者123 更新时间:2023-12-03 06:58:42 25 4
gpt4 key购买 nike

请参阅下面的代码,如果我删除所有 return 关键字,该函数仍然按预期工作,这导致我在与 Promise 混合时对回调()和返回回调()感到非常困惑

有人可以向我解释一下,以下哪个 return 可以删除吗?

done() 函数是否执行过?

const localLogin = new LocalStrategy(localOptions, (email, password, done) => {
User.find({ where: { email } }).then(user => {
if (!user) {
return done(null, false);
}
return user.validPassword(password, (err, isMatch) => {
if (err) {
return done(err, false);
}
if (!isMatch) {
return done(null, false);
}
return done(null, user);
});
}).catch(err => {
return done(err, false);
});
});

最佳答案

这些返回只会中断 user.Find 和 user.validPassword 回调的执行。例如,它可以被替换为 else 条件,如下所示:

const localLogin = new LocalStrategy(localOptions, (email, password, done) => {
User.find({ where: { email } }).then(user => {
if (!user) {
done(null, false);
}
else {
user.validPassword(password, (err, isMatch) => { // return at this point is not needed, because there is nothing to break after this function
if (err) {
done(err, false);
}
else{
if (!isMatch) {
done(null, false);
}
else {
done(null, user);
}

}
});
}
}).catch(err => {
done(err, false);
});
});

如您所见,return 允许摆脱许多 else 条件。

return callback()是一个很好的做法:

关于javascript - 在promise中返回callback()和callback(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37154218/

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