我想要实现的是解析给定的网站并将其标题写入 titles.txt
。我正在使用 request用于获取网站和 cheerio 的模块获得称号。
我正在使用 Q用于创建以下两个 promise 的模块:
阅读标题
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;
};
写标题
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
我做错了什么?
最佳答案
then
需要传递一个函数而不是一个值
.then(function() {return readTitle('http://www.stackoverflow.com'); })
.then(writeTitle);
关于node.js - 链接 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24296606/