Angular核心-创建对象-HttpClient

这篇博客介绍了Angular中创建对象的两种方式:手工创建和依赖注入,并详细阐述了Angular服务的概念及创建服务对象的步骤。重点讲解了如何使用Angular的HttpClient服务进行异步请求,包括导入HttpClientModule、声明依赖以及发起请求的示例代码。同时,提到了前端常见的异步请求工具及其优缺点,并提及了JavaScript设计模式的重要性。
摘要由CSDN通过智能技术生成

Angular核心-创建对象

📒博客首页:蔚说的博客
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
🙏作者水平很有限,如果发现错误,求告知,多谢!
🌺有问题可私信交流!!!
(达内教育学习笔记)仅供学习交流

创建对象的两种方式

方式1:手工创建式—自己创建:let c2 =new Car()
方式2:依赖注入式—无需自己new,只需要声明依赖;服务提供者就会创建被依赖的对象,注入给服务需要者

Angular核心概念—服务和依赖注入

Service:服务,Angular认为:组件与用户交互的一种对象,其中的内容都应该与用户操作有关系的;而与用户操作无关的内容都应该剥离出去,放在“服务对象”中,为组件服务;例如:日志记录,记时统计,数据服务器的访问…

创建服务对象的步骤:

1.创建服务对象并指定服务提供者

import { Injectable } from "@angular/core"

//所有的服务对象都是“可被注入的”
@Injectable({
    providedIn:"root"

    //指定当前服务对象在根模块中提供-appmodule
})
export class LogService{
    //执行日志记录功能
    doLog(action: any){
        let uname='admin'
        let time = new Date().getTime()
        console.log(`管理员:${uname}时间:${time}`)
    }
}

2.在组件中声明依赖,服务提供者就会自动注入进来,组件直接使用服务对象即可

//组件:服务使用者,必须声明依赖
  log
  constructor(abc:LogService){//声明依赖此处的abc变量会被注入为LogService实例
    this.log= abc//接收
  }
    doAdd(){//使用服务对象
    console.log('add')
    this.log.doLog(Action)
  }

使用Angular官方提供的服务对象—HttpClient Service

HttpClient 服务对象用于向指定的URl发起异步请求,使用步骤:
1.在主模块中导入HttpClient服务所在的模块
//app.module.ts
import {HttpClientModule} from ‘@angular/common/http’;
import :[BrowserModel,FormsModule,HttpClientModule]
2.在需要使用异步请求的组件中声明依赖于HttpClient 服务,就可以使用该对象发起异步请求了(只要声明,就可以被自动注入)
constructor(http:HttpClient){
this.http=http
}
3.调用HttpClient实例实现异步请求
this.http.get(url).subscribe((res: any)=>{})
效果图展示:
在这里插入图片描述
调用下列方法:即可得到调用api的信息

  loadProduct(){
    this.timer.start()
    let start =new Date().getTime()
    let url='http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1'
    //使用注入进来的HttpClient实例发起异步请求
    this.http.get(url).subscribe((res: any)=>{
      this.anyList =res
      console.log('得到了响应消息')
      console.log(res)
      return this.anyList =res
    })
    let end = new Date().getTime()
    this.timer.end('admin')
    console.log('耗时:',end-start)
  }

面试题:前端体系中有哪些发起异步请求的工具?各自的利弊?

工具名本质/优缺点
原生XHRlet xhr = new XMLHttpRequest()/浏览器支持的原生技术;基于回调方式处理响应
jQuery.ajax()也是XHR,只是进一步封装而已/比原生要简单,基于回调方式处理
Axios也是XHR,只是进一步封装而已/比原生要简单,基于Promise处理响应;可以排队、并发、撤销
NG HttpClient也是XHR,只是进一步封装而已/比原生要简单,基于‘观察者模式’处理响应;可以排队、并发、撤销
Fetch不再是XHR,是W3C提出的新技术,有望取代XHR/比XHR从根本上就更加先进;天然基于Promise,目前浏览器还有兼容性问题
需要学习:JavaScript设计模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔚说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值