如何在angularjs中获得promise中的已解析值

时间:2016-03-17 08:01:11

标签: angularjs promise resolve

如何直接在角度承诺中获得已解析的值?
我想得到字符串" ok"在下面的功能,而不是承诺对象 有人帮忙??

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 个答案:

答案 0 :(得分: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);
        });

答案 1 :(得分:0)

当你处理承诺时,你实际上无法做到这一点。承诺是等待或推迟到预期值准备就绪意味着你应该只在它的“then”块中得到值,特别是如果它是$ http承诺。