Как упростить глубокие вложенные обещания
Я сталкивался с ситуацией, когда мне нужно нарушать каждый пункт «еще» вthen()
и это выглядит не лучше, чем вложенные обратные вызовы, это процесс входа в систему:
User.findOne({
username: username
}).exec()
.then(user => {
if (user) {
return user.verifyPassAsync()
.then(matched => {
if (matched) {
return User.getBriefProfile(username))
.then(emp => {
if (emp) {
return saveToSession(emp);
} else {
//return
}})
} else {
//return ...
}})
} else {
// return false
}
})
Есть ли способ, которым я могу упростить это?