Promise.resolve vs resolve

时间:2018-02-13 10:39:42

标签: javascript promise

Hay,我有这段代码:

var promise1 = new Promise(function(resolve, reject) {
  setTimeout(() => {
         console.warn('Elo');
         resolve('First response');
      },
      1000);
})

promise1
.then((resp) => {
    console.warn('First then!');

});

然后它会在一秒钟之后解决承诺并且控制台。警告'首先是!'。

但是当我换线时:

resolve('First response');

代表

Promise.resolve('First response');

它无效。 有些想法为什么?

也试过

return Promise.resolve('First response');

但它也行不通。我不知道为什么。

你能帮我理解吗?

2 个答案:

答案 0 :(得分:5)

new Promise构造函数将特定函数传递给您的回调函数,该函数将成为您的resolve参数。该承诺(您使用new Promise构建的承诺)只能通过调用特定的resolve函数来解决。

Promise.resolve只是创建一个新的“预先解决”的承诺。它没有解决任何现有的承诺(也没有任何方式可以知道哪些承诺它应该解决)。

答案 1 :(得分:0)

另一种思考方式是:

Resolve === resolveCallback ===提供给Promise回调的第一个参数 Promise.resolve ===一个返回new Promise

的函数

这两个功能等效:

`const foo = Promise.resolve('First response').then( /* ... */ );`

`const bar = new Promise(function(resolveCallback, rejectCallback) {
    resolveCallback('First response');
  }).then( /* ... */ );`