2015-07-19 2 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

Вы не хочет вернуть данные обещания!
Вы do хотите вернуть обещание, чтобы «продолжить» цепочку.

Ожидание, которое вы ищете, - это обратные вызовы, которые вы прилагаете к обещанию.

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 Он ничего не меняет в решении. Очень странно делать '. $ Prom'. Никогда не использовал его. Вы должны использовать '$ q.defer()' и 'defer.resolve (...)'. – Mik378

+0

Вам не нужно '.then (функция (результат) {return result;});'. Просто опустите эту часть. – Bergi

Смежные вопросы