Nodejs:catch块中的回调函数在try-catch中返回未定义的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs:catch块中的回调函数在try-catch中返回未定义的参数相关的知识,希望对你有一定的参考价值。

我在具有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
) 

如果从catch块的撤回中发现this.item,如何返回它?

答案

您必须在return中进行catch递归调用:return this.start()由于您是returning一个Promise(调用异步函数),因此不需要await

以上是关于Nodejs:catch块中的回调函数在try-catch中返回未定义的参数的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose与bluebird结合使用实例

如何从 PowerShell 中的 catch 块中重新引发异常?

了解NodeJS中的回调函数

try catch finally return

是否有可能在catch块中出现异常? [重复]

nodejs异步回调函数中this问题,求助