跳到主要内容
CNode

async函数return出去的结果如何被调用的async函数的await获取?

问答
HhelloHT发布于 7 年前最后回复 7 年前
465250

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)

A
AnzerWall#47 年前
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即可

H
helloHT#37 年前
引用 cheerAprilasync 本身就返回promise的吗,为什么要加都个调用 let func1 = async function(){ try { let a = await p1(0); let b = ...

@cheerApril 因为我不想用then,我想继续用await的方式写,而且很多时候需要串行调用多个async函数,并且需要上一个函数的的值

C
cheerApril#27 年前

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 })

H
helloHT#17 年前

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

参与回复

登录后即可参与回复。登录