Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Woher wissen Sie, dass der Haken des Versprechens nicht geschrieben ist?

function p(){
    return new Promise((resolve, reject) => {
        reject();
    });
}

p().then(()=>{
    console.log(1);
})

Ich habe die Frage noch einmal bearbeitet, nur um zu fragen, ob ich die .catch() von p() nicht schreibe, wie soll ich den Browser in die Funktion p schreiben, damit der Browser keinen Fehler meldet

phpcn_u1582phpcn_u15822711 Tage vor488

Antworte allen(1)Ich werde antworten

  • PHP中文网

    PHP中文网2017-05-19 10:43:01

    两个问题:
    1.return 不是 retrun
    2.new Promise后需要加一个括号

    故原代码如下

    var x = 10;
    function p() {
        return new Promise((resolve, reject)=>{
            if(1 < x) {
                resolve();
            }
            if(5 < x) {
                reject();
            }
        });
    }
    p().then(() => {
        alert(1)
    })

    这样调用不会出问题, 另外1<x 过后又去判断 5<x, 后面那个if完全没必要, 不会执行的. 原因是promise的状态只能改变一次.第二次改变不会有效的.
    即使是reject()执行了,promise的抛错也是promise的事,与P函数无关,promise的抛错只能在promise后面加catch语句捕获.由于p函数返回了new出来的promise,故在p函数执行结果后面加catch语句即可.
    推荐看下这篇文章: Promise使用手册

    Antwort
    0
  • StornierenAntwort