Promise.resolve 和 new Promise(resolve) 可以互换吗
Are Promise.resolve and new Promise(resolve) interchangeable
我认为 Promise.resolve
和 new Promise(resolve)
可以互换。
考虑一下:
A.
new RSVP.Promise(function (resolve, reject) {
resolve();
}).then(function () {
return new RSVP.Promise(function (resolve) {
resolve("HI")
});
}).then(function (result) {
console.log(result);
});
B.
new RSVP.Promise(function (resolve, reject) {
resolve();
}).then(function () {
return RSVP.resolve("HI");
}).then(function (result) {
console.log(result);
});
都如我所料打印 "HI"。
所以我想如果我不需要 "reject" 任何东西。为了简单起见,我可以只写 RSVP.resolve();
。
但是考虑这个例子:
new RSVP.Promise(function (resolve, reject) {
resolve();
}).then(function () {
return new RSVP.Promise(function (resolve, reject) {
setTimeout(function () {
resolve("HI")
}, 3000);
});
}).then(function (result) {
console.log(result);
});
如何使用RSVP.resolve();
替换?我试过例如:
new RSVP.Promise(function (resolve, reject) {
resolve();
}).then(function () {
return setTimeout(function () {
return new RSVP.resolve("HI");
}, 3000);
}).then(function (result) {
console.log(result);
});
这会打印其他内容而不是 "HI"。那么是否可以使用 RSVP.resolve();这里?这两个可以互换吗?
首要
I think Promise.resolve and new Promise(resolve) are interchangeable.
没有。 Promise.resolve
将创建一个已解决的承诺,而 new Promise(resolve)
将创建一个既未解决也未拒绝的承诺。
在最后一个例子中,
return setTimeout(function () {
return new RSVP.resolve("HI");
}, 3000);
意味着,您正在 returning setTimeout
函数的结果,而不是 promise 对象。因此,当前 then
处理程序将 return 一个结果为 setTimeout
的已解决承诺。这就是为什么您会看到一个奇怪的对象。
在您的特定情况下,您想在解决承诺之前引入延迟。 Promise.resolve
是不可能的。您在问题中显示的倒数第二个方法就是要走的路。
我认为 Promise.resolve
和 new Promise(resolve)
可以互换。
考虑一下:
A.
new RSVP.Promise(function (resolve, reject) {
resolve();
}).then(function () {
return new RSVP.Promise(function (resolve) {
resolve("HI")
});
}).then(function (result) {
console.log(result);
});
B.
new RSVP.Promise(function (resolve, reject) {
resolve();
}).then(function () {
return RSVP.resolve("HI");
}).then(function (result) {
console.log(result);
});
都如我所料打印 "HI"。
所以我想如果我不需要 "reject" 任何东西。为了简单起见,我可以只写 RSVP.resolve();
。
但是考虑这个例子:
new RSVP.Promise(function (resolve, reject) {
resolve();
}).then(function () {
return new RSVP.Promise(function (resolve, reject) {
setTimeout(function () {
resolve("HI")
}, 3000);
});
}).then(function (result) {
console.log(result);
});
如何使用RSVP.resolve();
替换?我试过例如:
new RSVP.Promise(function (resolve, reject) {
resolve();
}).then(function () {
return setTimeout(function () {
return new RSVP.resolve("HI");
}, 3000);
}).then(function (result) {
console.log(result);
});
这会打印其他内容而不是 "HI"。那么是否可以使用 RSVP.resolve();这里?这两个可以互换吗?
首要
I think Promise.resolve and new Promise(resolve) are interchangeable.
没有。 Promise.resolve
将创建一个已解决的承诺,而 new Promise(resolve)
将创建一个既未解决也未拒绝的承诺。
在最后一个例子中,
return setTimeout(function () {
return new RSVP.resolve("HI");
}, 3000);
意味着,您正在 returning setTimeout
函数的结果,而不是 promise 对象。因此,当前 then
处理程序将 return 一个结果为 setTimeout
的已解决承诺。这就是为什么您会看到一个奇怪的对象。
在您的特定情况下,您想在解决承诺之前引入延迟。 Promise.resolve
是不可能的。您在问题中显示的倒数第二个方法就是要走的路。