Как получить разрешенное значение в пределах обещания в angularjs

Как получить разрешенное значение прямо в угловом обещании?
Я хочу получить строку "ок" в функции ниже, а не объект обещания.
кто-нибудь помочь??

var getReturn = function() {
        var defer = $q.defer();
        var promise = defer.promise;
        defer.resolve("ok");
        return promise.then(function (value) {
            console.log(value);
            return(value);
        });
    };

2 ответа

Поскольку функция не асинхронная, обещание не требуется. Таким образом, правильный путь будет:

var getReturn = function() {
  return "ok";
}

Если вы все еще хотите это как обещание, вы должны сделать следующее:

var getReturn = function() {
        var defer = $q.defer();
        setTimeout(function() {
           defer.resolve("ok");
        },0)
        return defer.promise;
    };

И где бы вы ни вызывали функцию, делайте тогда:

getReturn().then(function (value) {
            console.log(value);
        });

Вы не можете сделать это, когда имеете дело с обещаниями. Обещания должны ожидаться или откладываться до тех пор, пока не будет готово ожидаемое значение, то есть вы должны получить значение только в его блоке "then", особенно если это обещание $http.

Другие вопросы по тегам