CNode

async定义的function直接就返Promise对象

问答
Jjsnnid发布于7 年前最后回复7 年前3 回复3512 浏览0 收藏
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 { } 第二行[。。。。。略] 1 (注,第二行是console.log(tags, 1);)

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

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

查看回复

回复 (3)

J
jsnnid#1·7 年前

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

Y
yinxin630#2·7 年前

async返回值一定是Promise

J
JsonSong89#3·7 年前

返回的是Promise

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