Node.js Q承诺forEach返回未定义

雅各布·克拉克(Jacob Clark)

使用Q for Node.js,我向一个HTTP请求承诺,并在实现时调用另一个函数以传递该HTTP请求的响应,然后该函数从HTTP请求遍历JSON数组,建立一个新数组,然后返回它。

调试中,Reddit.prototype.parseData我可以看到传入了HTTP JSON,并且在for语句中,可以data在构建它时进行console.log ,但是在foreach的末尾,我无法console.log或返回数据对象,它返回未定义的

Reddit.js

var Reddit = function(){
    this.endpoint = "https://www.reddit.com/r/programming/hot.json?limit=10";
}

Reddit.prototype.parseData = function(json, q){
    var dataLength  = json.data.children.length,
        data        = [];

    for(var i = 0; i <= dataLength; i++){
        var post    = {};

        post.url    = json.data.children[i].data.url;
        post.title  = json.data.children[i].data.title;
        post.score  = json.data.children[i].data.score;

        console.log(data); //returns data    

        data.push(post);
    }

    console.log(data); // returns undefined

    return data;
}

module.exports = Reddit;

Feeds.js

var https   = require('https'),
        q       = require('q'),
        Reddit  = require('./sources/reddit');

var Feeds = function(){
    this.reddit = new Reddit();
    console.log(this.parseRedditData()); //undefined
}

Feeds.prototype.getData = function(endpoint){
    var deferred = q.defer();

    https.get(endpoint, function(res) {
        var body = '';

        res.on('data', function(chunk) {
            body += chunk;
        });

        res.on('end', function() {
           deferred.resolve(JSON.parse(body));
        });
    }).on('error', function(e) {
        deferred.reject(e);
    });

    return deferred.promise;
}

Feeds.prototype.parseRedditData = function(){
    var _this      = this;

    this.getData(this.reddit.endpoint).then(function(data){
        return _this.reddit.parseData(data);
    });


}

var fe = new Feeds()
Ben

正如@sholanozie所说,您不会从中返回任何内容parseRedditData我猜你想要的是:

var Feeds = function(){
    this.reddit = new Reddit();
    this.parseRedditData().then(function(data) {
        console.log(data);
    });
};
...
Feeds.prototype.parseRedditData = function(){
    var _this      = this;

    return this.getData(this.reddit.endpoint).then(function(data){
        return _this.reddit.parseData(data);
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js NPM MSSQL函数返回未定义

来自分类Dev

变量未定义node.js

来自分类Dev

Mongodb find()返回未定义的(node.js)

来自分类Dev

未定义模块名称-Node js

来自分类Dev

Javascript函数在Node.js中返回未定义的值

来自分类Dev

Node.js + Express-回调在完成之前返回未定义

来自分类Dev

node.js中返回的unirest响应未定义

来自分类Dev

Node.js请求-无法读取未定义的属性'forEach'

来自分类Dev

Require未定义node.js

来自分类Dev

模块函数在Node.js中返回未定义

来自分类Dev

Node.js解构变量返回未定义

来自分类Dev

MongoDB查找返回在Node.Js代码中未定义的结果

来自分类Dev

Node JS,Javascript:为什么函数返回值未定义?

来自分类Dev

node.js crypto pbkdf2返回未定义

来自分类Dev

返回结果Node.js时结果始终未定义

来自分类Dev

猫鼬,NODE JS返回未定义,但在findOne内收集了正确的数据

来自分类Dev

未定义Node.js __dirname

来自分类Dev

MongoDB返回“未定义”的node.js

来自分类Dev

Node.js NPM MSSQL函数返回未定义

来自分类Dev

Node.js Q承诺forEach返回未定义

来自分类Dev

Node.js“未定义res”

来自分类Dev

未定义Node.js会话

来自分类Dev

Node.js未定义的属性

来自分类Dev

Node.js请求-无法读取未定义的属性'forEach'

来自分类Dev

node.js中返回的unirest响应未定义

来自分类Dev

Node.js从MongoDB获取请求返回未定义

来自分类Dev

node.js函数返回未定义的值

来自分类Dev

node.js返回未定义的问题

来自分类Dev

Node.js 表单值总是返回“未定义”