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 Q承诺forEach返回未定义

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

node.js返回未定义的问题

来自分类Dev

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

来自分类Dev

未定义模块名称-Node js

来自分类Dev

变量未定义node.js

来自分类Dev

Require未定义node.js

来自分类Dev

未定义Node.js __dirname

来自分类Dev

Node.js“未定义res”

来自分类Dev

未定义Node.js会话

来自分类Dev

Node.js未定义的属性

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

node.js crypto pbkdf2返回未定义

来自分类Dev

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

来自分类Dev

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