Promise的递归调用

原文来自:snippets.barretlee.com,只是为了自己学习收集特意fork了一遍。如有侵权,联系删除:i@webcliwn.net
在递归爬取页面的时候,如果发现存在 next 标签就继续爬取,直到爬完。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getList(url) {
return new Promise(function(resolve, reject){
request(url, function(err, res, body) {
resolve(cheerio.load(body));
});
}).then(function($){
var next = $(".next").attr('href');
if(next) {
return getList(next);
} else {
return "DONE"
}
});
}