【发布时间】:2018-11-27 19:13:36
【问题描述】:
在我最近审查的 PR 中,我看到了这个:
const accessToken = await getAccessToken().catch(() => null);
我的问题是:catch 在这里有什么作用吗?它是否将 null 分配给accessToken?没有它会不一样吗?
【问题讨论】:
标签: javascript promise async-await es6-promise
在我最近审查的 PR 中,我看到了这个:
const accessToken = await getAccessToken().catch(() => null);
我的问题是:catch 在这里有什么作用吗?它是否将 null 分配给accessToken?没有它会不一样吗?
【问题讨论】:
标签: javascript promise async-await es6-promise
Arrow functions 拥有implicit returns。
在您的代码 sn-p 中,如果 getAccessToken() 被拒绝,则将输入 catch(),null 将是返回给 accessToken 的值。
本质上acccessToken 可以等于(取决于结果):
(访问令牌示例)
accessToken = asda8sdaewrascsac;
或
accessToken = null;
【讨论】:
“catch() 方法返回一个 Promise 并且只处理被拒绝的情况。” Source
所以这行简单地说,如果在完成承诺时发生错误,() => null,基本上是在 Promise 中返回 null。
【讨论】:
是的,如果在 getAccessToken 中没有捕获到错误,promise 中的值将是 null
const accessToken = await getAccessToken().catch(() => null); //accessToken will be a promise
accessToken .then(function(value) {
console.log(value); // expected output: null
});
【讨论】:
awaited,因此从 Promise 中解开?