为了账号安全,请及时绑定邮箱和手机立即绑定

ionic3 教程(五)基本的网络请求

标签:
WebApp

700

链接:
ionic3 教程(一)安装和配置  
ionic3 教程(二)登录页制作  
ionic3 教程(三)设置页制作  
ionic3 教程(四)安卓硬件返回键处理  
ionic3 教程(五)基本的网络请求

这是最后一节,本节主要用最简单网络请求和基本的内置指令做一个演示。

前言

通常我们希望在 HTTP 请求的时候,页面不会失去响应,所以我们的 HTTP 请求是异步的。
JavaScript 中,通常用 3 种方式处理异步代码。

  1. 回调(callback)

  2. 承诺(promise)

  3. 可观察对象(observable)

promise 和 observable 主要三个主要不同:

  • observable 可以中途取消,promise 发出就不行

  • observable 可以持续发射很多值,而 promise 只能发射一个值就结束了

  • observable 提供了更多的工具函数,最常用的是 filter 等

想更多了解 promise 的请看
《JavaScript Promise迷你书》

想更多了解  rxjs(observable) 的请看
《rxjs中文教程》

在 Angular 中,处理异步代码的最佳方式就是使用可观察对象,所以接下来会用到

app.module.ts

导入 Angular 的 HttpModule。

import { HttpModule } from '@angular/http';//然后在 imports 中插入 HttpModule 即可

测试用接口

本来找了一些别的接口作为测试,发现不会显示数据,打开 Chrome 测试了一下发现有跨域问题。

XMLHttpRequest cannot load

所以这里给大家推荐个网站,我们就用他来进行测试。
http://jsonplaceholder.typicode.com/

拖到下面的 Resources 可以看到图片。从图中可以看出接口种类还是比较丰富的,我们选择带图片的 /photos 进行测试。

478

Resources

home.ts

import { Http, Response } from '@angular/http';

@Component({  selector: 'page-home',  templateUrl: 'home.html'})export class HomePage {  // 接收数据用
  listData: Object;  // 依赖注入
  constructor(public navCtrl: NavController, private http: Http) {

  }

  ionViewDidLoad() {    // 网络请求
    this.http.request('http://jsonplaceholder.typicode.com/photos')
    .subscribe((res: Response) => {      this.listData = res.json();
    });
  }

http.request 会返回一个 Observable 对象。我们可以使用 subscribe 订阅变化。

当 http.request 从服务器返回一个流时,它就会发出一个 Response 对象。我们用 json 方法提取出响应体解析成一个 Object,最后将它赋值给 this.listData。

home.html

<ion-header>
  <ion-navbar>
    <ion-title>首页</ion-title>
  </ion-navbar></ion-header><ion-content padding>
  <ion-list *ngFor="let item of listData">
    <ion-item>
      <ion-avatar item-left>
        <img [src]="item?.url">
      </ion-avatar>
      {{item?.title}}    </ion-item>
  </ion-list></ion-content>

这里使用了一个 ngFor 遍历了 listData,生成了一个列表数据。还有一点要提一下,这个 item?.title 是 Angular 的一种语法,如果对象为空就不会取值,可以防止报错。

最后效果如图所示


700

效果图

再补上一个 Promise 的写法

import 'rxjs/add/operator/toPromise';this.http.request('http://jsonplaceholder.typicode.com/photos')
  .toPromise()
  .then(res => { this.listData = res.json(); })
  .catch(err => { console.error(err) });

自己动手试一试吧。这个入门系列结束之后,应该会去找一些模块进行深入点的展开。

Demo下载地址



作者:Snorlax丶
链接:https://www.jianshu.com/p/3ad54d7d1077


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消