我想要实现的是解析给定的网站并将其标题写入titles.txt
。我使用request模块获取网站,使用cheerio获取标题。
我使用Q模块创建以下两个承诺:
readTitle
var readTitle = function(url) {
var deferred = Q.defer();
request({
url: url
}, function(err, response, body) {
var $ = cheerio.load(body);
deferred.resolve($("title").text());
});
return deferred.promise;
};
writeTitle
var writeTitle = function(title) {
var deferred = Q.defer();
fs.appendFile('titles.txt', title + "\n", function() {
deferred.resolve();
});
return deferred.promise;
};
我希望以下脚本将Google
和Stack Overflow
写入文本文件:
readTitle('http://www.google.com')
.then(writeTitle)
.then(readTitle('http://www.stackoverflow.com'))
.then(writeTitle);
但实际上我得到的是:
Google
undefined
我做错了什么?
答案 0 :(得分:5)
then
需要传递函数而不是值
.then(function() {return readTitle('http://www.stackoverflow.com'); })
.then(writeTitle);