suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Fragen zur Verwendung von Promise

function test() {
    return new Promise((resolve, reject)=>{
        resolve(123);
    });
}
test().then((a)=>{
    console.log(a);
}).then(function (b) {
    console.log(b);//这行代码被执行了
});
Die erste Parametermethode von

then sollte ausgeführt werden, wenn das Versprechen aufgelöst wird, aber console.log(b) wird tatsächlich ausgeführt. Warum ist das so?

高洛峰高洛峰2736 Tage vor407

Antworte allen(2)Ich werde antworten

  • 天蓬老师

    天蓬老师2017-05-19 10:19:46

    不请自来怒答一记!

    在 Promise 中,.then( func ) 会返回一个新的 Promise 实例,这个实例的结果,是把函数体 func 的结果通过执行 Promise.resolve() 得到的。所以在你的问题里,console.log(a) 没有返回值,相当于 Promise.resolve(null) 得到一个状态为 resolved 的 Promise 实例,所以就会继续执行下一步了。

    关于 Promise,推荐你看我的教程:Promise 的 N 种用法 里面有非常详细的讲解,基本上能回答关于 Promise 的所有问题。

    Antwort
    0
  • 为情所困

    为情所困2017-05-19 10:19:46

    .then(参数1,参数2) 参数1是成功的回调函数(resolve()),参数2是失败的回调函数(reject()),由于你在这里的写法,第二个后面的.then(第一个函数) ,都会被执行,并且打印出b的值为undefined,大概就是这样!!

    Antwort
    0
  • StornierenAntwort