我想要实现的是解析给定的网站并将其标题写入titles.txt.我正在使用请求模块获取网站和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;
};
Run Code Online (Sandbox Code Playgroud)
writeTitle
var writeTitle = function(title) {
var deferred = Q.defer();
fs.appendFile('titles.txt', title + "\n", function() {
deferred.resolve();
});
return deferred.promise;
};
Run Code Online (Sandbox Code Playgroud)
我期待下面的脚本编写Google和Stack Overflow文本文件:
readTitle('http://www.google.com')
.then(writeTitle)
.then(readTitle('http://www.stackoverflow.com'))
.then(writeTitle);
Run Code Online (Sandbox Code Playgroud)
但我真正得到的是:
Google
undefined
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
then 需要传递函数而不是值
.then(function() {return readTitle('http://www.stackoverflow.com'); })
.then(writeTitle);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |