async定义的function直接就返Promise对象
发布于 6 年前 作者 jsnnid 2924 次浏览 来自 问答
router.getTagsArr = async function (tag = []) {
    var tags = [];
    for (var val of tag) {
        var db = await router.getTags(val);//这个方法返回的是new Promise
        tags.push(db);
    }

    console.log(tags, 1);
	//return tags;
    return 12;
}


console.log(router.getTagsArr());

如果这样调用,得到的结果是: 第一行:Promise { <pending> } 第二行[。。。。。略] 1 (注,第二行是console.log(tags, 1);)

如果我console.log(await router.getTagsArr()); 第一行[。。。。。略] 1 第二行12

显然,第二个结果是我要的。但是getTagsArr方法我并没有返Promise对象,他怎么就自动变成这样呢? 我知道这个是async定义影响的,但是这个关键字不是指定这个方法内,可以开启同步么?await。

3 回复

全都是在async function 下执行 router.getTagsArr()

async返回值一定是Promise

返回的是Promise<void>

回到顶部