2015-07-19 143 views
0

我需要等待承諾解決方案。如何等待諾言解決方案?

function myFunction(myService, projectId) { 
     var localdata; 
     var myDataPromise = myService.getData(projectId); 
     myDataPromise.then(function(result) { 
      localdata = result; 
     }); 
     var someResult = someProcess(localdata); // I need to wait for promise resolution. 
     return someResult; 
    } 

UPDATE

我試圖澄清我的問題。 我有服務爲myService與函數返回的承諾:

var getData = function (projectId) { 
     return projectResource.getProjectUser({ projectId: projectId }, function (result) { 
      return result; 
     }).$promise; 
    }; 

回答

0

想從一個承諾返回的數據!
想要返回承諾,以「繼續」鏈條。

您正在尋找的等待是您附加到承諾的回調。

function myFunction($scope, myService) { 
    var myDataPromise = myService.getData(); 

    myDataPromise.then(function(result) { 
     // this is the "wait" your looking for.. 
     $scope.data = result; 
     console.log("data.name"+$scope.data.name); 
    }); 

    return myDataPromise; // return the promise 
} 
+0

對不起,我寫了無效的例子。我需要使用局部變量。 – Mediator

1

你並不需要一個局部變量 ...

function myFunction(myService) { 
    return myService.getData().then(function(result) { 
     return result; 
    }); 
} 

和來電者是:

myFunction(myService).then(function(result){ 
    //you can be sure that result is fully computed here 
    console.log("Your result " + result); 
}) 
+0

對不起,我試圖澄清我的問題。我需要本地var – Mediator

+0

@Mediator它不會改變任何解決方案。使用'。promise'很奇怪。從未使用它。你應該更喜歡使用'$ q.defer()'和'defer.resolve(...)'。 – Mik378

+0

你不需要'.then(function(result){return result;});'要麼。只要省略那部分。 – Bergi

相關問題