Javascript 是否在函数范围外使用获取的数据?

Javascript 是否在函数范围外使用获取的数据?,javascript,angularjs,Javascript,Angularjs,我通过$http.get返回一个JSON对象。我能够得到结果集,它是一个数组,但是当我试图访问fetch()之外的对象时,我得到了未定义的结果集。不知道我错过了什么,为了做到这一点,任何帮助都是感激的 谢谢吉米 myObject.fetch().then(function(myData) { $scope.myData = myData; }); console.log($scope.myData) 在fetch()完成执行

我通过$http.get返回一个JSON对象。我能够得到结果集,它是一个数组,但是当我试图访问fetch()之外的对象时,我得到了未定义的结果集。不知道我错过了什么,为了做到这一点,任何帮助都是感激的

谢谢吉米

      myObject.fetch().then(function(myData) {
            $scope.myData = myData;
        });

       console.log($scope.myData) 

fetch()完成执行并调用传递的回调函数之前,$scope.myData是未定义的

在您的示例中,console.log()在myObject.fetch()完成之前被调用

在下面的示例中,它很可能会起作用(不要这样做!)


我不是告诉你这样做,实际上这是一个非常糟糕的方式。最佳做法是只在回调函数中使用该范围变量,因为它实际上是在回调函数中设置的。

代码实际上就是这样的吗?在这种情况下,
console.log
将在回调函数实际运行并设置
$scope.myData
console.log(1)
放入回调函数之前运行,与外部的数字
2
类似。运行并查看结果。想法?那么我需要设置超时吗?它会发生什么变化?@Jimi问题是
myObject.fetch()
将启动,并立即使用
console.log($scope.myData)
继续,尽管提取尚未完成。在fetch()返回后要执行的任何操作,都要将其放入函数中,并从fetch()中调用它。然后()
setTimeout(function(){
 console.log($scope.myData) 
}, 2000);