我试图通过不在其中一个中间步骤返回承诺来打破承诺链。
identity
.token(username, password)
})
.then((response) => {
// Here I would like to break the promise chain.. HELP please..
if (!token.tfa || !allow2FA)
return res.status(200).json(token.raw);
return twoFactor.generateLoginOtc(username, token);
})
.then((response) => {
return res.status(204).json();
})
.catch((error) => {
console.log(error);
return res.status(error.status).json(error);
});
答案 0 :(得分:2)
你不能以一种很好的方式打破承诺链,但你可以嵌套它们:
identity.token(username, password).then(response => {
if (!token.tfa || !allow2FA) {
return res.status(200).json(token.raw);
}
return twoFactor.generateLoginOtc(username, token).then(response => {
return res.status(204).json();
})
}).catch(error => {
console.log(error);
return res.status(error.status).json(error);
});
答案 1 :(得分:-1)
要打破承诺链,而不是return
,您需要throw
某些东西 - 通常是错误。
.then((response) => {
if (!token.tfa || !allow2FA) {
res.status(200).json(token.raw);
// throw error here
throw new Error('Error message');
}
return twoFactor.generateLoginOtc(username, token);
})
.then((response) => {
return res.status(204).json();
})
.catch((error) => {
console.log(error);
return res.status(error.status).json(error);
});