首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Angular 4如何在observable中进行http promise调用?

在Angular 4中,可以使用Observable和Http模块来进行HTTP Promise调用。下面是一个示例代码:

首先,确保已经导入了必要的模块和服务:

代码语言:typescript
复制
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';

然后,创建一个服务并注入Http模块:

代码语言:typescript
复制
@Injectable()
export class DataService {
  constructor(private http: Http) { }
}

接下来,可以在服务中定义一个方法来进行HTTP请求:

代码语言:typescript
复制
getData(): Observable<any> {
  return this.http.get('https://api.example.com/data')
    .map(response => response.json())
    .toPromise();
}

在组件中使用该服务并订阅Observable:

代码语言:typescript
复制
import { Component } from '@angular/core';
import { DataService } from './data.service';

@Component({
  selector: 'app-root',
  template: `
    <button (click)="getData()">Get Data</button>
  `
})
export class AppComponent {
  constructor(private dataService: DataService) { }

  getData() {
    this.dataService.getData()
      .subscribe(data => {
        // 处理返回的数据
      });
  }
}

在上述示例中,getData()方法返回一个Observable对象,通过使用.map()操作符将响应转换为JSON格式,并使用.toPromise()将Observable转换为Promise对象。在组件中,通过调用getData()方法并订阅Observable来获取数据。

关于Angular 4中的Observable和Http模块的更多详细信息,可以参考腾讯云的相关文档和产品介绍:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

何在Angular 2启用延迟加载? 大多数企业应用程序包含用各式各样的用于特定业务案例的模块。捆绑整个应用程序代码并完成加载,会在初始调用时,产生巨大的性能开销。...从堆栈溢出就是一个区别:  当异步操作完成或失败时,Promise会处理一个单个事件。 Observable类似于(在许多语言中的)Stream,当每个事件调用回调函数时,允许传递零个或多个事件。...通常ObservablePromise更受欢迎,因为它不但提供了Promise特性,还提供了其它特性。使用Observable可以处理0,1或多个事件。你可以在每种情况下使用相同的API。...如果服务器的HTTP请求结果或其它一些异步操作不再需要,则Observable的订阅者可以取消订阅,而Promise将最终调用成功或失败的回调,即使你不需要通知或其提供的结果。...Observable提供像map,forEach,reduce之类的类似于数组的运算符,还有强大的运算符,retry()或replay()等,使用起来是相当方便的。

17.3K80

【Appetite】ionic3实录(五)基本服务实现

image.png TypeScript,public为默认访问级别,即外部可以访问的,所以如果想控制权限,请手动添加private关键字。...因为目前大多插件的异步使用PromiseObservablePromise比较简单,而PromiseObservable比较麻烦,为了更方便集成,所以把官方推荐的Observable方式转成Promise...要想下次链式调用再处理异常,就应用Promise.reject继续抛出异常。 三、权限服务 ionic g provider auth 先建个文件备用。...: Http, public storage: Storage) { console.log(CacheKeys[CacheKeys.TOKEN]); } } 因为key使用字符串方式,不容易记忆使用...这些服务会随着业务功能的开发而补充,服务的每个方法可以不写返回类型(fun: Promise里的 Promise),但为了肉眼快速分辨出是异步方法还是普通方法?

3.1K40

Angular快速学习笔记(4) -- Observable与RxJS

的observables Angular 中大量使用了可观察对象,作为处理各种常用异步操作的接口。...HTTP 模块使用可观察对象来处理 AJAX 请求和响应 路由器和表单模块使用可观察对象来监听对用户输入事件的响应 事件发送器 EventEmitter Angular 提供了一个 EventEmitter...Angular 的 HttpClient 从 HTTP 方法调用返回了可观察对象。...例如,http.get(‘/api’) 就会返回可观察对象。 为什么NG使用observable而不是Promise?...反之,你可以使用一系列操作符来按需转换这些值 HTTP 请求是可以通过 unsubscribe() 方法来取消的 请求可以进行配置,以获取进度事件的变化 失败的请求很容易重试 Async 管道 AsyncPipe

5K20

RxJS 处理多个Http请求

有时候进入某个页面时,我们需要从多个 API 获取数据然后进行页面显示。管理多个异步数据请求会比较困难,但我们可以借助 Angular Http 服务和 RxJS 库提供的功能来实现上述的功能。...处理多个请求有多种方式,使用串行或并行的方式。 基础知识 mergeMap mergeMap 操作符用于从内部的 Observable 对象获取值,然后返回给父级流对象。...forkJoin forkJoin 是 RxJS 版本的 Promise.all(),即表示等到所有的 Observable 对象都完成后,才一次性返回值。...=> console.log(users)); } } 上面示例,我们通过依赖注入方式注入 HttpClient 服务,然后在 ngOnInit() 方法调用 http 对象的 get() 方法来获取数据...最后我们来看一下如何处理多个并行的 Http 请求。 forkJoin 接下来的示例,我们将使用 forkJoin 操作符。

5.7K20

Angular 快速学习笔记(1) -- 官方示例要点

把它标记为一个 HeroService 的注入点 在ngOnInit 调用service获取数据 a. 虽然构造函数也可以调用,但是我们需要让构造函数保持简单,只做初始化操作 b....使用ngOnInit 生命周期钩子调用服务 RXJS 处理异步操作 a....异步处理可以使用回调函数,可以返回 Promise(承诺),也可以返回 Observable(可观察对象) b. angular使用了Rxjs,因此使用ObservableObservable 是...使用http,需要在AppModule, @angular/common/http 中导入 HttpClientModule 符号,并把它加入 @NgModule.imports 数组 c....快速学习笔记(4) -- Observable与RxJS Angular快速学习笔记(3) -- 组件与模板 Angular快速学习笔记(2) -- 架构 Angular 快速学习笔记(1) -- 官方示例要点

3.6K50

Angular 快速学习笔记(1) -- 官方示例要点

把它标记为一个 HeroService 的注入点 在ngOnInit 调用service获取数据 a. 虽然构造函数也可以调用,但是我们需要让构造函数保持简单,只做初始化操作 b....使用ngOnInit 生命周期钩子调用服务 RXJS 处理异步操作 a....异步处理可以使用回调函数,可以返回 Promise(承诺),也可以返回 Observable(可观察对象) b. angular使用了Rxjs,因此使用ObservableObservable 是...使用http,需要在AppModule, @angular/common/http 中导入 HttpClientModule 符号,并把它加入 @NgModule.imports 数组 c....快速学习笔记(4) -- Observable与RxJS Angular快速学习笔记(3) -- 组件与模板 Angular快速学习笔记(2) -- 架构 Angular 快速学习笔记(1) -- 官方示例要点

3.6K00

Angular 从入坑到挖坑 - 路由守卫连连看

对应官方文档地址: 路由与导航 配套代码地址:angular-practice/src/router-combat 二、Contents Angular 从入坑到弃坑 - Angular 使用入门 Angular...从入坑到挖坑 - 组件食用指南 Angular 从入坑到挖坑 - 表单控件概览 Angular 从入坑到挖坑 - HTTP 请求概览 Angular 从入坑到挖坑 - Router 路由使用入门指北...,这里包含了对于路由的重定向、通配路由,以及通过动态路由进行参数传递的使用 import { NgModule } from '@angular/core'; import { Routes, RouterModule...,对于 CanDeactivate 守卫来说,我们需要将参数的 unknown 替换成我们实际需要进行路由守卫的组件 import { Injectable } from '@angular/core..., UrlTree, } from '@angular/router'; import { Observable } from 'rxjs'; // 引入需要进行路由守卫的组件 import {

3.7K30

Angular 关于pipe

Angular 的管道其实就是angularjs的过滤器,用来转换数据然后显示给用户。 要创建一个管道,必须实现 PipeTransform 接口。...使用管道的几个注意事项: 管道可以链式使用,还可以传参 {{date | date: 'fullDate' | uppercase}} 管道分两种 纯(pure)管道与非纯(impure)管道 默认是...Angular并没有提供 angularjs 自带的 Filter 和 OrderBy 过滤器,Angular官方推荐把过滤和排序放到组件实现,比如对外提供filteredHeroes 或 sortedHeroes...特有的管道,可以多使用 其实会处理两种对象类型,ObservablePromise,如果是Observable会执行subscription方法,如果是Promise调用then方法。...如果是Observable当组件销毁时执行unsubscribe方法取消订阅。

1.5K30

程序猿的今日头条面试历险记(一)

这次的面试是小姐姐在云南旅行中进行的,目前已经完成了二面,今天这篇文章是对一面的总结,过几天还有对二面的总结。相对来说,今日头条的面试是几个大厂相对较难的,且看小姐姐如何应对面试。...HTTP1.X 使用的是明文的文本传送,而 HTTP2 使用的是二进制传送,二进制传送的单位是帧和流。...Promise 不可被取消,observe 可以被取消 observable 可以 retry,或者多次调用。...对于 Promise,不论在后面怎么调用 then,实际上的异步操作只会被执行一次,多次调用没有效果;但是对于 observable,多次调用 forEach 或者使用 retry 方法,能够触发多次异步操作...url, method, headers) { headers = {} _open.call(this, url, method, headers) } 总的来说,还是偏基础,面试官没用过 Angular4

1.1K30

前端文件下载(四)

我们为什么不对原生的进行封装呢?我们当然可以对原生进行封装,但是有现成成熟的库,我们为什么不用呢? 案例使用的代码来源 前端文件下载(三),开发环境不变,服务端的代码不做变更。...笔者使用angular 框架来开发,其中集成了 @angular/common/http。那么,它又是如何像 axios 调用文件下载的呢? 我们简单写了个 demo,如下: <!...'@angular/common/http'; import { Observable } from 'rxjs'; @Injectable() export class DemoService {...总结 使用原生 XMLHttpRequest 处理请求,让我们知道文件下载的前后发生了什么;使用 axios 和 @angular/common/http 能让我们更好管理和快速开发 axios 也好,...@angular/common/http 也罢,大同小异,看团队来使用 关于前端文件下载,我们就讲到这里。

22830

Js 异步处理演进,Callback=u003EPromise=u003EObserver

API 函数 A 和 B 的 Respond 中提取 ID; switchMap — 使用前一个结果的 id 调用 callApiFooC,并返回一个新的 Observable,新 Observable...是 callApiFooC( resIds ) 的返回结果; switchMap — 使用函数 callApiFooC 的结果调用 callApiFooD; tap — 获取先前执行的结果,并将其打印在控制台中...; subscribe — 开始监听 observableObservable是多数据值的生产者,它在处理异步数据流方面更加强大和灵活,它在 Angular 等前端框架中被使用~~ 敲!...这写法,这模式不就是函数式编程的函子吗?Observable 就是被封装后的函子,不断传递下去,形成链条,最后调用 subscribe 执行,也就是惰性求值,到最后一步才执行、消费!...发布(同步地)1, 2, 3 三个值;1秒之后,继续发布4这个值,最后结束; subscribe 订阅,调用执行;subscription.unsubscribe() 可以在过程中止执行; 控制台打印结果

2K10

浅谈 Angular 项目实战

不过 Angular 的模板驱动表单并没有复选框的多选绑定,如果有这个需求,可以选择更加灵活强大的响应式表单进行数据绑定。其实,对于数组形式的数据可以使用天然的 select 多选框实现。...上方示例代码, sexMapping 使用接口中的可索引的类型进行定义。 异步开发之 RxJS 关于 RxJS 是一个比较复杂的话题,我也没有完全弄明白。...关于异步开发的历史在面试中有遇到过,可以说的东西很多,比如回调函数、Promise、迭代器和生成器、async 和 await,除此之外,RxJS 的可观察对象(Observable)应该是下一个更强大的异步编程方式...Angular 官网对可观察对象(Observable)和承诺(Promise进行了对比。 需要特别注意的就是,只有当订阅 Observable 的实例时,它才会开始发布值。...订阅时要先调用该实例的 subscribe() 方法,并把一个观察者对象传给它,用来接收通知。我刚开始使用时,也是因为这个原因被坑了一把。

4.5K00

进阶 | 重新认识Angular

使用虚拟DOM进行Diff。...Angular 核心:使用脏检测(新/旧值比较)Diff 当Model发生变化,会检测所有视图是否绑定了相关数据,再更改视图 Zone.js(猴子补丁:运行时动态替换) 将Javascript异步任务包裹一层...,使其运行在Zone上下文中 每一个异步任务为一个Task,提供钩子函数(hook) Angular2+变化 zone.js对异步任务进行跟踪 脏检查计算放进worker Angular2+树结构,自上而下进行脏检查...Promise需要调用then或者catch才能够执行,catch是另一种形式的then,调用then或者catch之后,它返回一个新的Promise,这样新的Promise也可以同样被调用,所以可以做成无限的...Rx的observable被subscribe之后,并不是继续返回一个新的observable,而是返回一个subscriber,这样用来取消订阅,但是这也导致了链式断裂,所以它不能像Promise那样组成无限

2.5K10

继续解惑,异步处理 —— RxJS Observable

还心存疑虑,本篇继续解惑~ Observable 称它为可观察对象,它并不是 Angular 的东西,而是 ES7 的一种用来管理异步数据的标准。...Observable 可观察对象是开辟一个连续的通信通道给观察者 Observer,彼此之前形成一种关系,而这种关系需要由 Subscription 来确立,而在整个通道中允许对数据进行转换我们称为操作符...('bar'), 1000); }); 我们可以调用 Observable.create 方法来创建一个 Observable,入参是 observer,在函数内部通过调用 observer.next(...简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。...(篇幅较长,建议收藏) angular-practice-rxjs RxJs 核心概念之Observable 我是掘金安东尼,公众号同名,日拱一卒、日掘一金,再会~

1K30
领券