【问题标题】:How to get the second `then` callback parameter with async/await?如何使用 async/await 获取第二个 `then` 回调参数?
【发布时间】:2018-09-19 21:31:44
【问题描述】:

例如

randomLibPromise.then((data, err) => { // do something with err })

我将如何用 await 翻译它? 这个承诺来自一个库,所以我无法控制错误通过then 而不是catch。我所拥有的是:

let data = await randomLibPromise.catch(err)

但我没有得到第二个参数,也无法检索错误。

我在 Google 上找到的每个示例都在谈论 catch 用于错误处理,而不是 then

【问题讨论】:

    标签: javascript node.js asynchronous async-await


    【解决方案1】:

    要“修复”这个奇怪的承诺,如果有的话,你可以只 throw err,否则 return 数据:

    var fixed = randomLibPromise.then((data, err) => { 
        if(err) throw err;
        return data;
    })
    

    结果将是一个执行正确操作的承诺,即将数据传递给 then,将错误传递给 catch,或者,如果正在等待,则返回 data 或抛出错误。

    fixed.then(data => { /* handle data */ }).catch(err => { /* handle err */ });
    // or
    try {
        var data = await fixed;
        // handle data
    } catch(err) {
        //handle err
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-13
      • 2019-08-17
      • 2022-11-18
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      相关资源
      最近更新 更多