Использование обещаний с AngularJS - PullRequest
0 голосов
/ 24 августа 2018

У меня есть эта услуга

   service.getCurrentUser = function () {
        var def = $q.defer(); 
        if (service.user == null)
        {
            $http.get("./api/GetCurrentUser/")
            .success(function(data) { 
                service.user=data; 
                def.resolve(data); 
            }) 
            .error(function() { 
                def.reject("Failed to get user"); 
            }); 
        }
        else
            def.resolve(service.user);              
        return def.promise;
    } 

в моем контроллере я хочу позвонить и дождаться возврата, а затем, если пользователь входит в определенную группу, запустить другой код

Как мне написать это, чтобы оно использовало обещание, возвращенное службой

1 Ответ

0 голосов
/ 24 августа 2018

Реализация обещания может быть такой:

service.getCurrentUser = function () {
    return new Promise((resolve,reject)=>{
        if (service.user == null) {
            $http.get("./api/GetCurrentUser/")
                .success(function (data) {
                    service.user = data;
                    resolve(data);
                })
                .error(function () {
                    reject("Failed to get user");
                });
        }else{
            resolve(service.user);
        }
    });
}

Вы можете назвать это как:

    service.getCurrentUser()
    .then(user => {
        console.log('user', user);
    })
    .catch(error => { 
        console.log('error', error);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...