async函数return出去的结果如何被调用的async函数的await获取?
发布于 6 年前 作者 helloHT 5418 次浏览 来自 问答

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出来的结果显示是正确的。请问还有更好的写法吗?

4 回复

不知道为什么,代码没有换行。。。。。。

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即可

回到顶部