我有一个这样的函数:
1: var object = get_resource($scope, CbgenRestangular, $stateParams.scheme_id);
2: console.log(object)
哪个运行这个:
get_resource = function ($scope, CbgenRestangular, id){
CbgenRestangular.one('scheme', id).get().then(function(object){
console.log(object)
return object
})
},
我的问题是,在 get_resource
函数 console.log
中返回完美的对象,但是上面代码中的第 2 行它是 undefined
,为什么?
这应该与get_resource
函数中的对象相同,为什么当我返回它时它是未定义的。
最佳答案
函数 get_resource
没有 return 语句,因此结果是 undefined
也就不足为奇了。您在函数内确实有一个 return 语句,您将其传递给 then
函数,但这不会从“外部”函数返回。
你在这里处理的是 promise 。 get
函数显然返回一个 promise :
var promise = CbgenRestangular.one('scheme', id).get();
要获取该 Promise 的结果,您可以使用 then
函数,就像在 get_resource
函数中所做的那样。
现在,如果您想在此函数之外处理该 Promise,您可以简单地返回该 Promise,然后执行相同的操作:
get_resource = function ($scope, CbgenRestangular, id){
return CbgenRestangular.one('scheme', id).get().then(function(object){
console.log(object)
return object
})
},
//.....
var promise = get_resource($scope, CbgenRestangular, $stateParams.scheme_id);
promise.then(function (object) {
console.log(object);
});
关于javascript - 返回对象时以下未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20882544/