如何直接在角度承诺中获得已解析的值?
我想得到字符串" 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);
});
};
答案 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承诺。