let func1 = async function(){ try { let a = await p1(0); let b = await p2(a); return Promise.resolve(b); } catch (error) { return Promise.reject(error); } }
let func2 = async function(){ try { let result = await func1(); } catch (error) { console.log(error); } } 像这样的写法可以吗?我自己node出来的结果显示是正确的。请问还有更好的写法吗?
不知道为什么,代码没有换行。。。。。。
async 本身就返回promise的吗,为什么要加都个调用 let func1 = async function(){ try { let a = await p1(0); let b = await p2(a); return Promise.resolve(b); } catch (error) { return Promise.reject(error); } }
function1.then(() =>{ //resolve }).catch(() =>{ //reject })
@cheerApril 因为我不想用then,我想继续用await的方式写,而且很多时候需要串行调用多个async函数,并且需要上一个函数的的值
let func1 = async function(){
let a = await p1(0);
let b = await p2(a);
return b; // 不需要处理异常,这个函数内产生的异常,会在func2 await时被抛出到func2那边去
}
let func2 = async function(){
try {
let result = await func1();
} catch (error) {
console.log(error);
}
}
如果要对错误处理后抛出,直接throw即可