AngularJS console.log返回真数据,然后返回空对象
AngularJS console.log returns true data then empty object
我有一个工厂:
app.factory("ExampleFactory", function() {
return {
map: {}
}
});
和控制器:
app.controller("appCtrl", function($scope, $http, ExampleFactory) {
$scope.map = ExampleFactory.map;
$scope.init = function() {
$http.get("/api") //success
.success(function(result) {
$scope.map = exampleMethod(result);
console.log($scope.map); //{ "1": Object, "2": Object }
});
console.log($scope.map); //Object {}
};
$scope.init();
});
为什么在第一种情况下,它返回一个数组,但然后什么也不返回?
更新:对不起,还有一个问题,我已经解决了。我不会删除答案,因为我收到了正确的答案。
返回数组的第一个例子实际上是第二个执行的。程序流程如下:
-
$scope.map
被工厂设置为空对象。 -
$scope.init
称为 -
$http.get
向"/api"发送http请求(但请求尚未返回) -
$scope.map
打印为console.log
,仍然是空对象 在此之后的某个时刻,web服务器返回您的http请求,此时调用 -
exampleMethod
设置$scope.map
为数组 -
$scope.map
被打印到console.log
,此时它是一个数组
.success
函数。我认为它应该首先在控制台上返回空,然后返回数组。
这是因为当收到来自GET /api
的响应时,您传递给成功方法的回调是异步执行的。让我们在代码中解释一下:
app.controller("appCtrl", function($scope, $http, ExampleFactory) {
$scope.map = ExampleFactory.map;
$scope.init = function() {
// Get request to the /api
$http.get("/api") //success
// here we instruct it to use our function if success
// but it is not executed until the response is received.
.success(
// Callback that is executed on success HTTP 200
function(result) {
$scope.map = exampleMethod(result);
// Second console.log displayed after receiving
// the response to the $http.get call
console.log($scope.map); //{ "1": Object, "2": Object }
}
/////////////////////////////////////////////////
);
// First console.log will display empty object
console.log($scope.map); //Object {}
};
$scope.init();
});
这对你有意义吗?
编码快乐!
相关文章:
- 将元素移动到右侧,然后返回到左侧
- 等待函数完成,然后将返回值分配给变量JS
- 如何点击标题中的链接,然后返回HTML、Javascript和CSS
- 如何比较两个数组,然后返回差异的索引
- 需要一个链接才能转到某个页面,然后快速返回到当前页面
- 使用函数for循环遍历对象以更改值,然后返回结果
- 如何检查服务器是否返回未定义然后忽略它
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- Javascript:编写一个函数,接收一个数组,然后返回一个只有唯一数字的数组,只删除数组
- AngularJS工厂调用PHP,然后返回AngularJS
- 返回.然后承诺-AngularJS
- 从mysql数据库中删除项目,然后返回最后一页
- 每次我点击我的网站,它都会重定向到home.html,然后返回到我点击的所需url
- 修改输入中的数组,然后返回输出
- 然后在ajax返回之前运行
- Javascript 返回过去 6 个月,然后将每个月用作变量
- 如何将 $http.put 封装到一个函数中,该函数执行某些操作,然后返回通过或失败的承诺
- Javascript 的提示,它接受简单的数学作为值,然后返回答案
- 铁:路由器工作很奇怪 - 将我发送到模板然后返回
- 在 中显示警告框 asp.net 将重定向到空白页,然后返回到原始页面