PhoneGap中文网

 找回密码
 立即注册
查看: 12501|回复: 3
打印 上一主题 下一主题

请问为何过本地的json文件获取数据总是获取的是promise对象

[复制链接]

2

主题

7

帖子

48

积分

新手上路

Rank: 1

积分
48
跳转到指定楼层
楼主
发表于 2015-6-24 22:11:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
老大们,新手求助:请问we过本地的json文件获取数据总是获取的是promise对象,导致无法正常解析显示。
用的是ionic tab的模板,把service.js的数据改成了http得get获取,代码如下:
  1. ngular.module('starter.services', [])

  2.     .factory('Chats', function ($http) {
  3.         // Might use a resource here that returns a JSON array

  4.         //alert("1");
  5.         // Some fake testing data
  6.         /*var chats = [{
  7.          id: 0,
  8.          name: 'Ben Sparrow11',
  9.          lastText: 'You on your way?',
  10.          face: 'img/ionic.png'
  11.          }, {
  12.          id: 1,
  13.          name: 'Max Lynx',
  14.          lastText: 'Hey, it\'s me',
  15.          face: 'https://avatars3.githubusercontent.com/u/11214?v=3&s=460'
  16.          },{
  17.          id: 2,
  18.          name: 'Adam Bradleyson',
  19.          lastText: 'I should buy a boat',
  20.          face: 'http://a.hiphotos.baidu.com/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=ab55cb8362d9f2d3341c2cbdc885e176/9c16fdfaaf51f3de642e4d0694eef01f3a297930.jpg'
  21.          }, {
  22.          id: 3,
  23.          name: 'Perry Governor',
  24.          lastText: 'Look at my mukluks!',
  25.          face: 'img/ionic.png'
  26.          }, {
  27.          id: 4,
  28.          name: 'Mike Harrington',
  29.          lastText: 'This is wicked good ice cream.',
  30.          face: 'https://pbs.twimg.com/profile_images/578237281384841216/R3ae1n61.png'
  31.          }];*/
  32.         var chats = null;
  33.         var url = "js/data";
  34.         chats = $http.get(url).success(function (response) {
  35.             chats = response;
  36.             console.log("1");
  37.             console.log(response);
  38.             return response;
  39.         });
  40.         console.log("2");
  41.         console.log(chats);


  42.         return {
  43.             all: function () {
  44.                 console.log("3");
  45.                 console.log(chats);
  46.                 return  chats;
  47.             },
  48.             remove: function (chat) {
  49.                 chats.splice(chats.indexOf(chat), 1);
  50.             },
  51.             get: function (chatId) {
  52.                 console.log('get'+chatId+" "+chats.length);
  53.                 for (var i = 0; i < chats.length; i++) {
  54.                     if (chats[i].id === parseInt(chatId)) {
  55.                         console.log('get'+chats[i].name);
  56.                         return chats[i];
  57.                     }
  58.                 }
  59.                 return null;
  60.             }

  61.         };
  62.         //return $http.get(url);
  63.     });
复制代码
打印log的时候,发现log2->log3->log1这种顺序打印的,明明我得get函数先写的,为何log1最后执行。而且get函数外部的chats都是promise类型,无法解析显示。

跪谢!!!!

回复

使用道具 举报

493

主题

2035

帖子

6894

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6894
沙发
发表于 2015-6-24 23:14:34 | 只看该作者
打印log的时候,发现log2->log3->log1这种顺序打印的,明明我得get函数先写的,为何log1最后执行。而且get函数外部的chats都是promise类型,无法解析显示。



你要知道  这个是异步请求,就是下面的程序不会等到你get请求完成在打印的,而是先会执行


还有你上面问了一大堆 不明白是你的接口返回数据有问题还是?
回复 支持 反对

使用道具 举报

2

主题

7

帖子

48

积分

新手上路

Rank: 1

积分
48
板凳
 楼主| 发表于 2015-6-24 23:21:03 | 只看该作者
admin 发表于 2015-6-24 23:14
打印log的时候,发现log2->log3->log1这种顺序打印的,明明我得get函数先写的,为何log1最后执行。而且get ...

老大,您好!在get中返回的数据没有问题!由于是异步的,如果我直接使用return中得all()方法,拿到的数据就变成promise的了,并不是get中获得的普通数组类型的object,无法通过像普通数组一样解析了。有没有什么方法能让我在all()方法中得chats类型跟get中 的chats获得数据保持一致呢?
回复 支持 反对

使用道具 举报

2

主题

7

帖子

48

积分

新手上路

Rank: 1

积分
48
地板
 楼主| 发表于 2015-6-24 23:22:34 | 只看该作者
admin 发表于 2015-6-24 23:14
打印log的时候,发现log2->log3->log1这种顺序打印的,明明我得get函数先写的,为何log1最后执行。而且get ...

老大,请问有什么方法能让我先把get的数据获得,再显示到界面呢?现在由于异步,导致我想通过all()显示get获取的数据无法显示呢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2025-1-4 19:56 , Processed in 0.046579 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表