Javascript 角度承诺($q)不起作用

Javascript 角度承诺($q)不起作用,javascript,angularjs,Javascript,Angularjs,我试图在我的演示应用程序中使用Angular with Signaler。我试图使用$q服务来使用承诺。我不知道我的代码有什么问题,但它不起作用 服务 var boardConsole = $.connection.builtinboard; var chat = angular.module('chat', []); chat.factory('board', ['$q', '$timeout', function ($q, $timeout) { var board = {}; board.

我试图在我的演示应用程序中使用Angular with Signaler。我试图使用$q服务来使用承诺。我不知道我的代码有什么问题,但它不起作用

服务

var boardConsole = $.connection.builtinboard;
var chat = angular.module('chat', []);
chat.factory('board', ['$q', '$timeout', function ($q, $timeout) {
var board = {};
board.startBoard = function (callback) {
    $.connection.hub.start(function () {
        if (angular.isFunction(callback)) {
            callback();
        }
    });
};
board.loadAllMessages = function () {
    var deferred = $q.defer();
    boardConsole.server.loadAllMessages().done(function (messages) {
        deferred.resolve(messages);
    }).fail(function () {
        deferred.reject(function () {
            //SHOW NOTHING FOUND 
        });
    });
    return deferred.promise;
};
return board;
} ]);
控制器

chat.controller('chatController', ['$scope', 'board', function ($scope, board) {
$scope.Messages = [];
board.startBoard(function () {
    board.loadAllMessages().then(function (messages) {
        alert('1');
        $scope.Messages = messages;
    });
});
} ]);

它不工作

只需将它包装在
$timeout
中即可。如有必要,这将执行安全的
$apply

$timeout(function(){
    deferred.resolve(messages);
});

您必须在解析/拒绝承诺后调用$rootScope.$apply(),否则angular不知道承诺已解析
,但它不起作用。
好句子。错误、日志等,您是否尝试调试?可能重复
deferred.resolve(messages)下的try to add console.log朱西奥,你为什么不知道承诺还没有解决?我试过了,但没有用。请参见尝试使用
然后
而不是
最后