strict mode中使用yield出错
发布于 10 年前 作者 Kevin6241 14286 次浏览 最后一次编辑是 8 年前 来自 问答

代码如下(使用strict mode)

function* resolve(url) {
    let opt = {
        uri: url,
        headers: {'user-agent': 'Mozilla/5.0'}
    };
    request(opt, function(err, res, body) {
        let $ = cheerio.load(body);
        let links = $('h2').find('a');
        for (let link in links) {
            yield $(link).attr('href');
		}
    });
}

运行时出现Unexpected strict mode reserved word的问题。我搜stackoverflow,有人给出的解决方案是用co包装一下,原因也没说清楚。 谁能帮忙解释下问题出在哪里? 是我yield的用法不对还是strict mode有特殊的限制? 有没有办法在不使用co的情况下解决这个问题?

2 回复

想明白为什么出错了 这个yield实际是在一个回调函数里,而这个回调函数并不是generator。 我想实现的功能是让这个resolve函数解析一段html,之后把返回里边我需要的数据(数组)。 有没有什么办法在不添加回调函数的情况就能解决吗?

用 co-request 包吧

回到顶部