javascript - 工厂返回返回函数,而不是函数的产物

标签 javascript angularjs

我已经在工厂内部实现了一个似乎有效的 promise 。然而我似乎正在返回函数......而不是函数的乘积。如果我控制台日志,我会看到控制台中打印出的完整功能而不是数据。

我是否搞乱了数据返回的方式?

对象 {data: function} <-- 来自控制台日志

latestScores.factory('importIO', function($q) {

return {

    data: function(){

         var deferred = $q.defer()

         setTimeout(function() {

         var io2 = new importio("xxx", "xxx", "import.io");

         io2.connect(function(connected) {

         if (!connected) {
            console.error("Unable to connect");
            return;
         }

        var data;

        var callback = function(finished, message) {

            if (message.type == "DISCONNECT") {
                console.error("The query was cancelled as the client was disconnected");
                deferred.reject(new Error('No name specified for greeting'))
            }

            if (message.type == "MESSAGE") {
                if (message.data.hasOwnProperty("errorType")) {

                    console.error("Got an error!", message.data);
                } else {
                data = message.data.results;
                deferred.resolve(data)
                }
            }
            if (finished) {
                data = message.data.results;
                deferred.resolve(data)

            }
        };

        io2.query({
            "connectorGuids": [
                "xxx"
            ],
        }, callback);

    });

     }, delay)
    return deferred.promise

    }
}

});

latestScores.controller('ScoresController', function($scope, importIO) {

    $scope.liveScores = importIO.data; 

    console.log($scope.liveScores); /* returns a console log of function not data */

});

感谢您的宝贵时间。

最佳答案

您将函数分配给 $scope.liveScores 而不是结果。

您可以像这样使用 Promise:

importIO.data().then(function(result){
    $scope.liveScores = result;
    console.log($scope.liveScores);
});

这意味着您执行数据函数,然后在“data”方法完成后,将结果分配给liveScores

关于javascript - 工厂返回返回函数,而不是函数的产物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30088585/

相关文章:

javascript - if 循环中的按钮

javascript - 对使用 angular 和 typescript 链接 $q promises 感到困惑

javascript - Protractor 和 Jasmine : How can I test redirects?

javascript - 如何使用 AngularJS 自定义过滤器和 lodash

javascript - 使用同一页面上另一个日历中的日期更改 Bootstrap 日期选择器日历中的日期?

javascript - 在 Javascript 中将 .csv 文件中的字符串转换为日期对象

javascript - 使用 Puppeteer 获取 HTML 属性的值

asp.net - 如何捕获 ModalPopupExtenders JavaScript Hide 调用?

javascript - 使用 GruntJS 的 AngularJS 开发模式

javascript - 'this' 是否始终指向模板中的当前范围?