请问为何过本地的json文件获取数据总是获取的是promise对象
老大们,新手求助:请问we过本地的json文件获取数据总是获取的是promise对象,导致无法正常解析显示。用的是ionic tab的模板,把service.js的数据改成了http得get获取,代码如下:
ngular.module('starter.services', [])
.factory('Chats', function ($http) {
// Might use a resource here that returns a JSON array
//alert("1");
// Some fake testing data
/*var chats = [{
id: 0,
name: 'Ben Sparrow11',
lastText: 'You on your way?',
face: 'img/ionic.png'
}, {
id: 1,
name: 'Max Lynx',
lastText: 'Hey, it\'s me',
face: 'https://avatars3.githubusercontent.com/u/11214?v=3&s=460'
},{
id: 2,
name: 'Adam Bradleyson',
lastText: 'I should buy a boat',
face: 'http://a.hiphotos.baidu.com/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=ab55cb8362d9f2d3341c2cbdc885e176/9c16fdfaaf51f3de642e4d0694eef01f3a297930.jpg'
}, {
id: 3,
name: 'Perry Governor',
lastText: 'Look at my mukluks!',
face: 'img/ionic.png'
}, {
id: 4,
name: 'Mike Harrington',
lastText: 'This is wicked good ice cream.',
face: 'https://pbs.twimg.com/profile_images/578237281384841216/R3ae1n61.png'
}];*/
var chats = null;
var url = "js/data";
chats = $http.get(url).success(function (response) {
chats = response;
console.log("1");
console.log(response);
return response;
});
console.log("2");
console.log(chats);
return {
all: function () {
console.log("3");
console.log(chats);
returnchats;
},
remove: function (chat) {
chats.splice(chats.indexOf(chat), 1);
},
get: function (chatId) {
console.log('get'+chatId+" "+chats.length);
for (var i = 0; i < chats.length; i++) {
if (chats.id === parseInt(chatId)) {
console.log('get'+chats.name);
return chats;
}
}
return null;
}
};
//return $http.get(url);
});
打印log的时候,发现log2->log3->log1这种顺序打印的,明明我得get函数先写的,为何log1最后执行。而且get函数外部的chats都是promise类型,无法解析显示。
跪谢!!!!
打印log的时候,发现log2->log3->log1这种顺序打印的,明明我得get函数先写的,为何log1最后执行。而且get函数外部的chats都是promise类型,无法解析显示。
你要知道这个是异步请求,就是下面的程序不会等到你get请求完成在打印的,而是先会执行
还有你上面问了一大堆 不明白是你的接口返回数据有问题还是?
admin 发表于 2015-6-24 23:14
打印log的时候,发现log2->log3->log1这种顺序打印的,明明我得get函数先写的,为何log1最后执行。而且get ...
老大,您好!在get中返回的数据没有问题!由于是异步的,如果我直接使用return中得all()方法,拿到的数据就变成promise的了,并不是get中获得的普通数组类型的object,无法通过像普通数组一样解析了。有没有什么方法能让我在all()方法中得chats类型跟get中 的chats获得数据保持一致呢? admin 发表于 2015-6-24 23:14
打印log的时候,发现log2->log3->log1这种顺序打印的,明明我得get函数先写的,为何log1最后执行。而且get ...
老大,请问有什么方法能让我先把get的数据获得,再显示到界面呢?现在由于异步,导致我想通过all()显示get获取的数据无法显示呢。
页:
[1]