首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连锁承诺

连锁承诺
EN

Stack Overflow用户
提问于 2014-06-18 23:31:35
回答 1查看 333关注 0票数 2

我想要实现的是解析给定的网站并将其标题写入titles.txt。我使用请求模块获取网站,使用干杯获取标题。

我正在使用问:模块创建以下两个承诺:

readTitle

代码语言:javascript
复制
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

代码语言:javascript
复制
var writeTitle = function(title) {
    var deferred = Q.defer();
    fs.appendFile('titles.txt', title + "\n", function() {
        deferred.resolve();
    });
    return deferred.promise;
};

我期望下面的脚本将GoogleStack Overflow写到文本文件中:

代码语言:javascript
复制
readTitle('http://www.google.com')
.then(writeTitle)
.then(readTitle('http://www.stackoverflow.com'))
.then(writeTitle);

但我真正得到的是:

代码语言:javascript
复制
Google
undefined

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 00:13:20

then需要传递一个函数而不是一个值。

代码语言:javascript
复制
.then(function() {return readTitle('http://www.stackoverflow.com'); })
.then(writeTitle);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24296606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档