javascript - 如何用async/await获取第二个 `then`回调参数?

标签 javascript node.js asynchronous async-await

例如

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

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

let data = await randomLibPromise.catch(err)

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

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

最佳答案

要“修复”这个奇怪的 promise ,您可以只抛出错误(如果有),否则返回数据:

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

结果将是一个做正确事情的 promise ,即将数据传递给 then,将错误传递给 catch 或者,如果等待,则返回 data 或抛出错误。

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

关于javascript - 如何用async/await获取第二个 `then`回调参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52406910/

相关文章:

javascript - 检测在 Mac 上键入的重音字符?

node.js - 错误 : Cannot find module Please verify that the package. json 在 npm run dev 上有一个有效的 "main"条目 nuxtjs 错误

java - Apache HttpComponents 5 : POST form data with HttpAsyncClient

javascript - 无法获得按顺序评估的 Promise

node.js - socket.io 仅向发送者发送数据包

node.js - 包装 process.nextTick 导致超出最大调用堆栈大小

javascript - 使用 requirejs 进行优化

javascript - 找不到express.js 文件

javascript - 在带有书签的索引处将文本插入 TinyMCE 时丢失选择

javascript - 如何在dialogflow中的计划时间自动触发意图