我需要检查用户是否存在于两个数据库中,如果不存在,则必须创建一个新用户。
检查数据库中是否存在该用户1.如果存在,则抛出一个“用户存在”并捕获它,而不执行其余的then()。
检查用户是否存在于数据库中2.如果存在,抛出“用户存在”并捕获它,而不执行其余的then()。
否则,如果它不存在,则创建用户。
我在试着打破承诺链。这是一个场景。所以我所做的是
const promise = new Promise((resolve, reject) => {
resolve(false);
}).then(value => {
//check if user exists in table 1 and set value to True or False
if (value==True){
throw "User exists";
}
else{
return value;
}
}).then(value=> {
////check if user exists in table 2 and set value to True or False
if (value==True){
throw "User exists";
}
else{
return value;
}
}).catch(err => {
console.log(err);
});这是它看起来简短的样子。
但是,即使我抛出一条消息,它也不会停止执行后面的then()语句。即使找到了用户,它也会继续执行整个代码。
它还显示了下面的代码,并停止了整个执行。
throw 'user found'
^注意:在获得用户值之后,我必须对它们做一些处理。所以不应该停止执行。
发布于 2020-03-16 22:26:21
使用return Promise.reject(new Error())而不是抛出。顺便说一句-如果你抛出,你应该throw new Error('message')。
但这是应该如何处理错误,而不是代码执行的逻辑。
checkIfUserExistsInDB1() //this must be a function returning a promise
.then(user => {
if (!user) return checkIfUserExistsInDB2() //this must be a function returning a promise
else return Promise.resolve(user)
})
.then(user => {
if (!user) return createUser() //this must be a function returning a promise
else return Promise.resolve(user)
})
.then(user=> { do whatever you need more })
.catch(err => { handle error }) https://stackoverflow.com/questions/60707555
复制相似问题