【发布时间】:2020-05-12 05:33:04
【问题描述】:
我的理解是then()promise 方法本身总是返回一个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;
})
我想确定我有这个。非常感谢您的帮助。
【问题讨论】:
-
你忘了
.catch(function(error) {.... -
是的,
thenalways 为相应回调的结果返回一个新的承诺。 如果该回调返回一个也将被等待的承诺,但如果回调返回一个普通值(甚至undefined),那么该承诺将简单地实现。 -
使用
await->const bar = await myPromise.then(value => value); console.log(typeof bar); // string -
typeof不会告诉你某事是否是一个承诺。它为几乎任何类型的对象返回"object",包括promise。见:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript promise