如下代码,一直输出Unhandledpromiserejection(rejectionid:1):error1,怎么避免?主要功能为getVal第一次调用预加载,第二次调用时没返回就等,返回了就直接取值constrejects=[0,1]leti=0functiongetSummary(id){returnnewPromise((resolve,reject)=>{console.log('rr',id,i)if(rejects.includes(i)){setTimeout(()=>reject('error1'),200)}elseif(id===1){setTimeout(()=>resolve(id),200)}else{setTimeout(()=>resolve(id),500)}i++})}classTest{test(){this.getVal()setTimeout(async()=>{try{constval=awaitthis.getVal()console.log('get1',val)}catch(ex){console.log('error')}console.log('get2',awaitthis.getVal())},1000)}asyncgetVal(){try{if(!this.summary){this.summary=getSummary(1).catch(()=>getSummary(2)).then((data)=>{this.summary=datareturndata})}elseif(this.summary.then){returnawaitthis.summary}}catch(ex){this.summary=null}returnthis.summary}}newTest().test()已解决见3楼如1楼所说,第一个getVal异常被上抛了,直接trycatch也不行,只能Await才行。只好去看await改成3楼的了
米琪卡哇伊
森林海
相关分类