簡體   English   中英

AngularJS在事件內返回承諾

[英]AngularJS Return a promise inside a event

我在run函數中有一個$routeChangeSuccess事件。 我喜歡用$http加載某些東西,而不是更改$template 問題在於$http是異步的。 我試圖在活動中返回承諾。 沒有成功。 是否有可能還是我需要直接使用jquery來加載沒有$http資源?

app.run(["$rootScope", "$http", "$location", "$q", "localize", function($rootScope, $http, $location, $q) {
    $rootScope.$on("$routeChangeSuccess", function(event, current, previous) {
        var promise = $q.defer();
        //load something and resolve promise when everything is ready
        return promise;
    });
}
]);

$ q.defer方法不返回承諾。 它返回一個延遲的對象。 您需要返回deferred.promise以返回承諾。

將您的代碼更改為

    var deferred = $q.defer();
    // load something and resolve promise when everything is ready
    // resolve it using deferred.resolve('foo');
    return deferred.promise;

閱讀文檔http://docs.angularjs.org/api/ng。$ q

$rootScope.$on("$routeChangeSuccess", function(event, current, previous) {
    return $http.get(some_url)
        .success(function(data){
            // do something with the data
            return myChangedData;
        })
        .error(function(data){
            // do something on error, $broadcast?
            return myError;
        });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM