Возвращение обещания внутри цикла не останавливает цикл - PullRequest
0 голосов
/ 25 июня 2018

Следующий метод должен вернуть либо отклоненное ИЛИ разрешенное обещание, но, похоже, он возвращает оба:

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();
}

Метод регистрирует оба сообщения:

  1. "Пользователь уже зарегистрирован."
  2. "Пользователь не зарегистрирован."

Поэтому в дальнейшем я не могу справиться с обещанием.Какой момент я пропустил?

1 Ответ

0 голосов
/ 25 июня 2018

Вы не можете остановить цикл forEach, возвращая что-либо.Единственный способ остановить это - выдать ошибку, которая НЕ рекомендуется для логики.

Вместо этого можно использовать Array.prototype.some.

function isNotAlreadyRegistered(newsletterJsonArray, parsedJson){
  const emailAsId = parsedJson.email;
  return newsletterJsonArray.some(function(entry) {
    return entry.email === emailAsId
  }) ? Promise.reject() : Promise.resolve();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...