Reputation: 351
The following method should return either a rejected OR a resolved promise, but it seems to return both:
function isNotAlreadyRegistered(newsletterJsonArray, parsedJson){
const emailAsId = parsedJson["email"];
newsletterJsonArray.forEach(function(entry) {
if( entry["email"] == emailAsId){
console.log("User already registered.");
return Promise.reject();
}
});
console.log("User not registered.")
return Promise.resolve();
}
The method logs both messages:
So in the following i can not handle the promise. Which point did i miss?
Upvotes: 0
Views: 196
Reputation: 45106
You can't stop forEach
loop by returning anything. The only way to stop it is to throw an error which is NOT recommended way to do you logic.
You could use Array.prototype.some
instead.
function isNotAlreadyRegistered(newsletterJsonArray, parsedJson){
const emailAsId = parsedJson.email;
return newsletterJsonArray.some(function(entry) {
return entry.email === emailAsId
}) ? Promise.reject() : Promise.resolve();
}
Upvotes: 1