5.服务

作者: 佐伊er | 来源:发表于2018-01-16 17:38 被阅读0次
一. 创建英雄服务:

把获取英雄数据的任务重构为一个单独的服务,它将提供英雄数据,并把服务在所有需要英雄数据的组件间共享

1.英雄数据类型:hero.ts

export class Hero{
  id:number;
  pic:string;
  name:string;
  ...
}

2.模拟的英雄数据:mock-heroes.ts

import { Hero } from './hero'
export const HEROES:Hero[]=[
   { },{ },{ }
];

3.在app.component.ts中添加一个尚未初始化的heroes属性:

heroes:Hero[];

4.创建hero.service.ts

import { Injectable } from '@angular/core';  //依赖注入
@Injectable()                               //@Injectable()装饰器
export class HeroService{

}

5.获取英雄数据,返回模拟的英雄数据:getHeroes()方法

gerHeroes(): Hero[] {
  return HEROES;
}
二. 在其他组件中使用英雄服务:

1.导入HeroService

import { HeroService } from './hero.service';

2.注册HeroService提供商:@Component

providers:[HeroService];

3.注入HeroService
添加一个构造函数,并定义一个私有属性;添加组件的providers元数据。

constructor( private heroService: HeroService){ }

4.该服务被存入了一个私有变量heroService中。调用此服务,并获得数据

getHeroes():void{
    this.heroes=this.heroService.getHeroes();
}

5.ngOnInit 生命周期钩子

import { OnInit } from '@angular/core';
export class HeroesComponent implements OnInit{
    ngOnInit():void{
      this.getHeroes();
    }
}
三. 异步服务与承诺:

getHeroes()函数签名是同步的。为了协调视图与响应,我们可以使用承诺(Promise),它是一种异步技术,它会改变getHeroes()方法的签名。

1.把HeroService的getHeroes方法改写为返回承诺的形式:

gerHeroes(): Hero[] {
  return HEROES;
}

修改后:

getHeroes(): Promise<Hero[]> {
  return Promise.resolve(HEROES);
}

2.修改HeroService之后,this.heroes会被赋值为一个Promise而不再是英雄数组。

getHeroes():void{
    this.heroes=this.heroService.getHeroes();
}

修改后:

getHeroes(): void {
  this.heroService.getHeroes().then(heroes => this.heroes = heroes);
}

相关文章

  • 5.服务

    依赖注入 AngularJS采用模块化的方式组织代码,将一些通用逻辑封装成一个对象或函数,实现最大程度的复用这导致...

  • 5.服务

    一. 创建英雄服务: 把获取英雄数据的任务重构为一个单独的服务,它将提供英雄数据,并把服务在所有需要英雄数据的组件...

  • OPC-UA核心标准V104第四章5.12

    5.服务集 5.12 MonitoredItem服务集 5.12.1 MonitoredItem模型 5.12.1...

  • 组合微服务的方式(一)

    1.服务代理模式 2.服务聚合模式 3.服务串联模式 4.服务分支模式 5.服务异步消息模式 6.服务共享数据模式...

  • 微服务架构 | 5. 服务容灾

    前言 参考资料:《Spring Microservices in Action》《Spring Cloud Ali...

  • MySQL数据库密码破解

    可以停止服务 5.6及之前版本 1.停服务 2.启服务——mysql_safe 3.修改密码 4.停止服务 5.启...

  • 5.开启邮件服务功能

    在Metabase中配置Email功能。当配置了Email服务之后,Metabase使用该邮箱账号能够实现以下的功...

  • 5. native层的服务

    注册 native 服务到 service_manager。以 SurfaceFlinger 服务为例。 首先来看...

  • 5.消费端服务降级

    1.force:return客户端做如下配置,force:return时,直接走mock,不去远端服务 2.fai...

  • 使用WiFi p2p做Service Discovery进行通信

    1.配置权限 2.加入本地服务 3.注册监听服务 4.查找服务 5.连接服务 在注册监听的时候当发现服务可用时会回...

网友评论

      本文标题:5.服务

      本文链接:https://www.haomeiwen.com/subject/qnnsoxtx.html