Как дождаться обещания разрешения?

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

ОБНОВИТЬ

Я пытаюсь уточнить свой вопрос. У меня есть сервис myService с функцией, которая возвращает обещание:

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

2 ответа

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
    Извините, я написал неверный пример. Мне нужно работать с локальной переменной.
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
    Извините, я попытался уточнить свой вопрос. Мне нужен местный вар
  • 0
    @Mediator Это ничего не меняет в решении. Это довольно странно .$promise . Никогда не использовал это. Вы должны предпочесть использование $q.defer() и defer.resolve(...) .
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню