例如
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/