簡體   English   中英

為什么我的諾言不能在angular js中工作?

[英]Why isnt my promise working in angular js?

下面是我的角度控制器,但在其中,我的諾言似乎不起作用。 console.log沒有顯示響應,也沒有在此處顯示警報。

myapp.controller('contrl6', ['$scope','$q','$localStorage','$http',
  function ($scope,$q,$localStorage,$http) {

    $scope.myXhr = function(){

    var q = $q.defer();

     $http({
        method: 'GET',
         url: '/api/session_data'
        })
        .success(function(response){
            console.log(response);
            q.resolve('request successful');
        })
        .error(function(response){
          console.log("error");
            q.reject('ERROR');
        });


    return q.promise;
}
console.log("hi");

var myPromise = $scope.myXhr();
  myPromise.then(function(resolve){
        alert(resolve);
        console.log(resolve);
        }, function(reject){
        alert(reject);
        console.log(reject);      
    });


  }]);

myxhr內部,沒有任何東西與$http的結果連接在一起。 不必擔心創建新的Promise,因為$http已經返回了一個:

$scope.myXhr = function(){

 return $http({
    method: 'GET',
     url: '/api/session_data'
    })
    .then(function(response){
        return response;
    })
    .catch(function(response){
        throw new Error('ERROR');
    });
}

棄用通知

$http舊版.success方法.success.error已過時。 請使用標准的.then方法。 1

$scope.myXhrPromise = function(){
    return (
        $http({
            method: 'GET',
            url: '/api/session_data'
        }).then (function onFulfilled (response) {
            console.log(response.data);
            //return data for chaining
            return response.data;
        }).catch (function onRejected (response) {
            console.log(response.status);
            //throw to chain rejection
            throw response;
        })
    );
};

我將您的代碼復制/粘貼到Plunkr中,一旦正確連接,它就可以正常工作。

此處的Plunkr示例

正如Duncan所說,請確保使用ng-app和ng-controller正確連接。 如果您可以使用HTML標記更新您的問題,也許我們可以提供進一步的幫助。

暫無
暫無

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

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