javascript - Resolves propagating up multiple calling async functions -


i've been trying rejects of asynchronous functions bubble callers, it's not working reason. here's tested example code:

"use strict";  class test {    constructor() {       this.do1();    }     async do1() {       try { this.do2(); } catch(reason) { console.error(reason); }    }     async do2() {       for(let = 0; < 10; i++) {          await this.do3();          console.log(`completed ${i}`);       }       console.log("finished do1");    }     async do3() {       return new promise((resolve, reject) => {          settimeout(() => {             if(math.random() < 0.3) reject('###rejected');             else resolve("###success");          }, 1000);       });    } }  export default test; 

chrome gives me every time: unhandled promise rejection ###rejected.

any idea why happening? i'd able handle thrown errors higher level do2() (the above example works fine if try/catch in do2() , wraps await this.do3();). thanks!

edit: bit more explicit, if take try/catch out of do1() , put in do2() follows, works fine:

async do2() {    try {       for(let = 0; < 10; i++) {          await this.do3();          console.log(`completed ${i}`);       }       console.log("finished do1");    } catch(reason) { console.error(reason); } } 

async do1() {     try {         await this.do2();     }     catch(reason) {         console.error(reason);     } } 

do2 asynchronous function. , call without await. so, when completes there's no try-catch clauses around it.

see this question , this article more details.


Comments

Popular posts from this blog

c++ - Difference between pre and post decrement in recursive function argument -

php - Nothing but 'run(); ' when browsing to my local project, how do I fix this? -

php - How can I echo out this array? -