Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

76
Views
Treating errors in recursive function

I have a function that copies collections of files, so, i made it recursive, first i call it with the name of the collection to say so, after that, i call the function with each child file of that collection.

My issue is, i have to updated the status of the operation at the end ( succes or fail ), and this being a recursive function it is a bit hard to understand if i'm doing it right.

My solution at this moment looks like this:

copyDocument = async (sourceId: string, destinationId: string, commandId: string = ''): Promise<void> => {
    try {
      //some code to get the entry type based on the id
      ...
      if (entry.type === EntryType.COLLECTION) {
        const children: Entries[] = await this.repo.getEntries(entry.id);
        //calling the copyDocument function without the commandId
        const copyDocumentRequests = children.map(async child => await this.copyDocument(child.id, newEntry.id))
        await Promise.all(copyDocumentRequests);
      }
      //if i am in the first call ( the one with the command id given as a param
      //i can updated the command status ( status of the operation )
      if (commandId){
        this.commands[commandId].status = CommandStatus.COMPLETED;
      }
    } catch (error: unknown) {
      //again, if i am in the first call and i get an error i update the status and error param
      if (commandId){
        this.commands[commandId].status = CommandStatus.FAILED;
        this.commands[commandId].error = error;
      } else {
        //if i am in a recursive call ( copying a child file ) , and i fail
        //i throw the error and hopefully it will be processed in the first call of the function
        throw(error)
      } 
    }
  };

Does this implementation work? Could it be improved?

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!