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