Javascript then()真的在所有情况下都返回承诺吗?
我知道Javascript then()真的在所有情况下都返回承诺吗?,javascript,promise,Javascript,Promise,我知道then()promise方法本身总是返回一个promise。作为一个新手,我仍然习惯于承诺,所以我只是回顾了一些例子并进行了修补。下面的示例显示then方法的返回值是一个对象 const foo=true; const myPromise=新承诺((解决、拒绝)=>{ 设置超时(()=>{ 如果(foo){ 决定(“这样做”); }否则{ 拒绝(错误(“那样做”); } }, 1500) }) const bar=myPromise.then(value=>value); console
then()
promise方法本身总是返回一个promise。作为一个新手,我仍然习惯于承诺,所以我只是回顾了一些例子并进行了修补。下面的示例显示then
方法的返回值是一个对象
const foo=true;
const myPromise=新承诺((解决、拒绝)=>{
设置超时(()=>{
如果(foo){
决定(“这样做”);
}否则{
拒绝(错误(“那样做”);
}
}, 1500)
})
const bar=myPromise.then(value=>value);
console.log(条形图的类型);//对象
这是否等同于回报承诺?或者我是否需要明确告诉然后返回这样的承诺(伪代码,我知道不正确):
。然后(值=>{
//做点什么
回报新的承诺;
})
我想确定我有这个。非常感谢您的帮助。是的,then()
方法返回一个承诺。它最多包含两个参数:用于承诺成功和失败案例的回调函数
承诺是一个对象,承诺的类型将是一个对象
。你不需要明确地回报一个承诺
您可以阅读有关承诺的更多信息是然后()
始终返回承诺。但是,伪代码是不正确的。函数然后接受两个参数:
p.then(onFulfilled[, onRejected]);
p.then(value => {
// fulfillment
}, reason => {
// rejection
});
与Promise
构造函数完全相同<编码>然后
从另一个承诺中创建一个承诺。我们经常忽略onRejected
参数,因为我们使用catch
处理拒绝案例
这里有一篇有趣的文章:
然后,then
doc:您忘记了.catch(函数(错误){..
是,则总是为相应回调的结果返回一个新的承诺。如果该回调返回一个承诺,也将等待一个,但如果回调返回一个普通值(甚至未定义的)然后承诺就可以实现了。使用await
->const bar=await myPromise.then(value=>value);console.log(typeof bar);//string
typeof
不会告诉你某个东西是否是承诺。它会为几乎任何类型的对象返回“object”
,包括承诺。请参阅: