angular - Angular 4 中 Observable 和 Promise 的简单定义

标签 angular http promise observable

我真的很想完整、简单地了解 Angular 中的 Observable 和 Promises。感谢有人用一个简单的例子告诉我。

最佳答案

建议阅读 http 上的 Angular 文档 link这个答案来自文档。

Angular http.get 返回一个 RxJS Observable。(HTTP 请求不需要 Observable,因为它是 1 个请求和 1 个响应) Observable 是可以使用类似数组的运算符处理的事件流。 转换为 Promise 通常是一个不错的选择。您通常要求 http.get() 获取单个数据 block 。当您收到数据时,您就完成了。调用组件可以轻松地以 Promise 的形式使用单个结果。

这是一个简单的例子: .../app/http.service.ts

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
@Injectable()
export class HttpService {

constructor(private _http: Http) { }
retrieveTasks() {
    return this._http.get('/tasks').map(data=>data.json()).toPromise()
  }
}

请注意,_http.get() 有 2 个链接到它的函数:.map.toPromise().map方法用于将HTTP请求返回的对象转换为json格式的对象,.toPromise方法用于强制_http。 get() 调用返回一个 Promise 而不是 Observable。无需在基​​本 HTTP 请求中使用 Observable 的优势,使用 Promises 使其更加干净和简单。

关于angular - Angular 4 中 Observable 和 Promise 的简单定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45159946/

相关文章:

java - 为什么 redshift 连接中的连接时间错误?

http - 如何使用 scrapy 爬取依赖于帖子的网站

javascript - 如何使用finally通过promise链传递变量

javascript - JS - 按顺序链接异步方法,不带回调或修改

asp.net - 在 IIS 中部署 Angular 6 应用程序后,我收到一个空白页面,没有错误

javascript - angular2 在输入 url 路径时不加载组件

Angular 4 确认指令

iphone - 如何确保只能从我的代码访问我的 Web 服务?

javascript - 使用 Promise.all 的最佳实践是什么?

angular - ng2-charts 自定义数据和悬停在条形图上时显示的工具提示的整个 html 内容