【发布时间】:2020-05-22 03:49:08
【问题描述】:
我在一个有 try-catch 的类中有一个异步函数。当尝试遇到错误时,我想召回函数重新尝试。
我当前的实现成功地调用了 catch 块中的函数,但是如果连续尝试成功,则返回的结果始终是 undefined。
代码:
class Extractor {
constructor(item) {
this.item = item
}
async start() {
try {
let results = await someApiCallPromise()
this.item.moreData = results
return this.item //<== Upon sequential recall from catch, it always return undefined
} catch (err) {
if (err == "someError") {
await this.start() // <== this.start() recalls successfully
} else {
//Other error handling method
}
}
}
}
//Usage
let item = {
param1: '1',
param2: '2'
}
let extractor = new Extractor(item)
extractor.start()
.then(item => {
console.log(item) // <== Always return undefined if recalled from catch block
})
如果 this.item 从 catch 块中的召回成功,我该如何返回?
【问题讨论】:
标签: javascript node.js