javascript - 返回对象时以下未定义

标签 javascript angularjs

我有一个这样的函数:

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/

相关文章:

javascript - HTML5 拖放不起作用

javascript - 在 Angular 应用程序中重置谷歌验证码?

javascript - ngClass 不工作?

javascript - Angular Service 可以调用 Controller 中调用该服务的函数吗?

javascript - python - 在网络服务中以字节形式发送 pdf

javascript - javascript 的 onClick 事件在移动设备上不起作用

javascript - Uncaught TypeError : this. state.pokemon.filter 不是函数?

javascript - 为什么 HashMap get/set 被认为具有 O(1) 复杂度?

javascript - React 抓取 JSON 响应属性

jquery - 如何在 URL 更改时为 div 赋予 ontouch 效果