strict mode中使用yield出错
代码如下(使用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 包吧