从angular的promise函数中获取数据
get out data from promise function in angular
我有这个angular项目的服务文件的一部分,问题是我不能从承诺返回值到主函数。然后函数…下面是代码
angular.module('starter.services', [])
.factory('Services', function ($http,$q) {
var def = $q.defer();
// Might use a resource here that returns a JSON array
$http.get('JSONFILE').then(function (data) {
def.resolve(data.data);
});
this.result ={};
var var1 = def.promise;
var1.then(function (data){
this.result = data;
console.log(this.result);
});
// Some fake testing data
console.log(this.result);
return {
all: function () {
return var1;
},
remove: function (service) {
var1.splice(var1.indexOf(service), 1);
},
get: function (serviceId) {
for (var i = 0; i < var1.length; i++) {
if (var1[i].id === parseInt(serviceId)) {
return var1[i];
}
}
return null;
}
};
});
。结果将返回承诺之外的空对象。然后得到正确的数据
实际上,如果你在谈论这里的日志语句:
// Some fake testing data
console.log(this.result);
this.result
没有相同数据的原因是Promise
可能仍在等待(履行承诺)。
我怀疑当你看到这些console
日志时,你会首先看到外的承诺显示。
同样,你的块作用域是不同的,这意味着this.result
在Promise上下文中可以是不同的。
尝试改变:
this.result = {};
:
var result = {};
和
var1.then(function (data){
result = data;
console.log(result);
});
相关文章:
- Ajax-如何获取数据
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 从数据库中获取数据并插入JavaScript变量
- 从单击的行上的列中获取数据
- Solr查询以按日期月份获取数据&年
- React路由器服务器端渲染和ajax获取数据
- 使用JavaScript在IE9中获取数据列表选项
- 从json子数组获取数据
- 使用angularjs中的rest调用通过id获取数据
- 正在从ruby应用程序中的数据库中获取数据
- 如何从servlet获取数据到ajax成功
- 从选择下拉菜单中获取数据
- 异步获取数据使用JavaScript同步获取数据
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 如何在Angular.js中循环动态添加Fields并获取数据并将其发送到服务器
- JavaScript-获取数据属性的值返回未定义的值
- 如何从文本区域获取数据并使用javascript进行解密
- 在put方法之前从作用域获取数据
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么