Promise 只返回已解析的值

tee*_*nna 2 javascript promise es6-promise

虽然我知道 JS 中的 promise,但返回单个对象。这只是我在我的 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));
Run Code Online (Sandbox Code Playgroud)

这只会打印“Thats a Football star”,尽管“Lebron”不以 m 开头,应该被拒绝

Fel*_*ing 5

一个承诺有一个内部状态。它基本上从“待定”过渡到“已完成”或“已拒绝”。一旦它处于后两种状态之一,它就会留在那里。“已实现”的承诺不能再次转换为“已实现”。因此,对resolveor 的后续调用将reject被简单地忽略。