我在控制器中定义了一个变量:
app.controller('myController',['$scope','ajaxCall',function($scope,ajaxCall){
$scope.interviewer = {};
ajaxCall.get(/* A url */).then(function(response){
$scope.interviewer = response.data;
console.log($scope.interviewer);
});
console.log($scope.interviewer);
ajaxCall是一个自定义服务,用于进行ajax调用。内部控制台工作正常(即显示完整的数据),但外部控制台正在打印一个空对象。为什么?
答案 0 :(得分:2)
因为 AJAX 中的第一个 A 意味着“异步”。
传递给then()
的函数在最后console.log()
行之后的很长一段时间内异步执行 。一旦对异步HTTP请求的响应从服务器返回,它就会被执行。
如果它是同步的,我们不会打扰promises和回调函数。我们会做的
var response = ajaxCall.get(url);
但这是不可能的,所以我们
ajaxCall.get(/* A url */).then(function(response){
表示:请发送此请求,当响应可用时,请调用此函数。在此期间我会做很多其他的事情。