【问题标题】:Javascript Promise, returning null from catch?Javascript Promise,从catch中返回null?
【发布时间】:2018-11-27 19:13:36
【问题描述】:

在我最近审查的 PR 中,我看到了这个:

const accessToken = await getAccessToken().catch(() => null);

我的问题是:catch 在这里有什么作用吗?它是否将 null 分配给accessToken?没有它会不一样吗?

【问题讨论】:

    标签: javascript promise async-await es6-promise


    【解决方案1】:

    Arrow functions 拥有implicit returns

    在您的代码 sn-p 中,如果 getAccessToken() 被拒绝,则将输入 catch()null 将是返回给 accessToken 的值。

    本质上acccessToken 可以等于(取决于结果)

    (访问令牌示例)

    accessToken = asda8sdaewrascsac;

    accessToken = null;


    【讨论】:

      【解决方案2】:

      catch() 方法返回一个 Promise 并且只处理被拒绝的情况。” Source

      所以这行简单地说,如果在完成承诺时发生错误,() => null,基本上是在 Promise 中返回 null。

      【讨论】:

        【解决方案3】:

        是的,如果在 getAccessToken 中没有捕获到错误,promise 中的值将是 null

        const accessToken = await getAccessToken().catch(() => null);  //accessToken will be a promise
        
        accessToken .then(function(value) {
          console.log(value);    // expected output: null
        });
        

        【讨论】:

        • 不会 accessToken 为空,因为它是 awaited,因此从 Promise 中解开?
        猜你喜欢
        • 1970-01-01
        • 2019-08-07
        • 2018-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        相关资源
        最近更新 更多