如何修改此函数以返回稳定数据?

时间:2015-05-22 22:30:35

标签: javascript angularjs loops twitter angularjs-directive

我正在使用指令从调用Twitter API的服务返回返回推文。但在我将推文附加到范围之前,我想运行一些函数来根据我的喜好格式化数据。这些包括重新格式化日期,使用实体将文本处理为HTML,获得情绪等等。

/* Lazy loading */
        element.find('.scroll').scroll(function() {
            if ($(this)[0].scrollHeight - $(this).scrollTop() == $(this).outerHeight()) {
                loadTweets(attrs.query,scope.maxId);
            }
        });

        /* Load tweets function */
        function loadTweets(query, maxId, sinceId) {

            /* Get tweets from service that calls API */
            gettweets(query, maxId, sinceId).then(function(tweets) {

                /* Set Max ID and Since ID for Paging */
                scope.maxId = tweets[tweets.length-1].id;
                scope.sinceId = tweets[0].id;

                /* Loop through response */
                for (var i in tweets) {

                    /* Return reply meta if reply */
                    if (tweets[i].in_reply_to_status_id_str) {
                        (function(j) {
                            gettweet(tweets[i].in_reply_to_status_id_str).then(function(tweet) {
                                tweets[j].reply = tweet;
                            });
                        })(i);
                    }

                    /* Return parsed date for moment filter */
                    tweets[i].created_at_parsed = new Date(Date.parse(tweets[i].created_at));

                    /* Return tweet html with entities */
                    tweets[i].text_linkified = linkify(tweets[i]);

                    /* Return sentiment from Mashape API */
                    (function(j) {
                        getsentiment(tweets[i].text).then(function(response) {
                            tweets[j].sentiment = response;
                        });
                    })(i);

                    /* Push Tweets into scope  */
                    scope.tweets.push(tweets[i]);
                }
            });
        }

这种“几乎”有效,除非我在分页数据时,有时max_id没有得到更新,我最终得到了重复的推文。

如何更好地格式化以确保我的max_id仅在所有推文成功返回时更新,并且新推文在max_id为最新版之前不会加载?

0 个答案:

没有答案