Promise возвращает только разрешенные значения - PullRequest
2 голосов
/ 04 марта 2020

Хотя я знаю обещания в JS, верните один объект. Это просто я играю с ним на моем chrome инспекторе и задаюсь вопросом, почему он вернет только разрешенное значение (требуется пояснение)

const soccerPlayer = ["Messi", "Maradona", "Lebron", "Mane"];

const myPromise = new Promise(( resolve, reject) => {
    soccerPlayer.forEach( element => {
        if( element.startsWith("M")) {
            resolve("Thats a soccer star");
        } else {
            reject("Not a soccer star");
        }
    })
});

myPromise                                                                                                   
   .then(res => console.log(res));                                                                            
   .catch(err => console.log(err));

Это будет печатать только "Это футбольная звезда", хотя "Леброн" "не начинается с m и должно быть отклонено

1 Ответ

5 голосов
/ 04 марта 2020

Обещание имеет внутреннее состояние. Он в основном переходит от «ожидающих» к «выполненным» или «отклоненным». Как только он находится в одном из последних двух состояний, он остается там. «Выполненное» обещание не может снова перейти к «выполненному». Поэтому последующие вызовы resolve или reject просто игнорируются.

...