Как получить разрешенное значение в пределах обещания в 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.