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');
但它也行不通。我不知道为什么。
你能帮我理解吗?
答案 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( /* ... */ );`