我有以下Javascript代码在我的网页控制器。
$.getJSON('resources/properties/properties.json', function(data) {
$scope.properties = data;
});
$http({
method: 'GET',
url: $scope.properties.Properties.dataLocation
}).
success(function (data) {
$scope.all_types_and_configs = data;
$scope.exec = [];
}).
error(function (data) {
$scope.error = data.message;
$scope.data = '';
return;
});
});
要获取的json文件的结构不是问题。
它应该首先运行$.getJSON命令,然后运行$http -请求,因为$http请求从顶部的$.getJSON部件中定义的变量获得它的url,但是当我在它下面执行console.log(属性)时,它会弹出“未定义的”。
为什么代码没有按照编写的顺序执行?
发布于 2015-07-23 00:42:26
为了编写代码,代码正在执行,当相应的请求完成时,只执行回调函数。因此,您应该将第二个电话放在第一个回调中:
$.getJSON('resources/properties/properties.json', function(data) {
$scope.properties = data;
$http({method: 'GET', url: $scope.properties.Properties.dataLocation}).
success(function (data) {
$scope.all_types_and_configs = data;
$scope.exec = [];
}).
error(function (data) {
$scope.error = data.message;
$scope.data = '';
return;
});
});
});
发布于 2015-07-23 00:28:27
它是异步执行的,因此这两个调用将独立执行。$.getJSON有第三个参数--成功回调--这是同步这些参数的方法。http://api.jquery.com/jquery.getjson/
不知道为什么要混合jQuery AJAX和角$http?
发布于 2015-07-23 00:37:43
同样,在收到JSON之后,您已经有了行$scope.properties = data;
来运行。将其放入传递给getJSON的回调函数中。
为什么代码没有按照编写的顺序执行?
它是。
getJSON(url, foo)
的意思是“向url发出HTTP请求,并设置一个事件处理程序,以便在收到响应时调用foo
”。
你似乎在期待它在做任何其他事情之前等待响应。这将锁定UI并变得可怕。
https://stackoverflow.com/questions/31581914
复制相似问题