我的理解是,then()
Promise方法本身总是返回一个Promise。承诺是我仍然习惯于适应新事物的东西,因此我只是研究了一些示例并进行了修补。下面的示例说明then
方法的返回值是一个对象。
const foo = true;
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
if (foo) {
resolve('Do this');
} else {
reject(Error("Do that"));
}
}, 1500)
})
const bar = myPromise.then(value => value);
console.log(typeof bar); // object
这与兑现诺言一样吗?还是我需要显式地告诉then
返回这样的承诺(伪代码,我知道不正确):
.then(value => {
// do something
return new Promise;
})
我想确保我已经知道了。非常感谢您的帮助。
答案 0 :(得分:3)
是的,then()
方法返回一个Promise。它最多包含两个参数:Promise成功和失败案例的回调函数。
promise是一个对象,promise的类型将是object
。您不需要显式地返回承诺。
您可以详细了解promises
here
答案 1 :(得分:0)
是的then()
总是返回诺言。但是,伪代码不正确。函数then
带有两个参数:
p.then(onFulfilled[, onRejected]);
p.then(value => {
// fulfillment
}, reason => {
// rejection
});
与Promise
构造函数完全一样。 Then
建立另一个承诺。我们经常忽略onRejected
参数,因为我们用catch
处理拒绝情况。
这里有一篇有趣的文章:https://medium.com/@kevinyckim33/what-are-promises-in-javascript-f1a5fc5b34bf
还有then
文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then