CNode

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

问答
HhelloHT发布于7 年前最后回复7 年前4 回复6492 浏览0 收藏

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)

H
helloHT#1·7 年前

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

C
cheerApril#2·7 年前

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#3·7 年前
引用 cheerAprilasync 本身就返回promise的吗,为什么要加都个调用 let func1 = async function(){ try { let a = await p1(0); let b = ...

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

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

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