如何等待诺言解决方案?

问题描述:

我需要等待承诺解决方案。如何等待诺言解决方案?

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; 
    }; 

想从一个承诺返回的数据!
想要返回承诺,以“继续”链条。

您正在寻找的等待是您附加到承诺的回调。

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

你并不需要一个局部变量 ...

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