• fromPromise
    • 签名: fromPromise(promise: Promise, scheduler: Scheduler): Observable
  • 创建由 promise 转换而来的 observable,并发出 promise 的结果。
    • 示例
      • 示例 1: 将 promise 转换成 observable 并捕获错误
  • 其他资源

    fromPromise

    签名: fromPromise(promise: Promise, scheduler: Scheduler): Observable

    创建由 promise 转换而来的 observable,并发出 promise 的结果。


    :bulb: 打平类操作符通常可以接收 promises 而不需要 observable 包装!

    :bulb: 你还可以使用 Observable.from 达到同样的效果!


    fromPromise - 图3

    示例

    示例 1: 将 promise 转换成 observable 并捕获错误

    ( jsBin |
    jsFiddle )

    1. import { of } from 'rxjs/observable/of';
    2. import { fromPromise } from 'rxjs/observable/fromPromise';
    3. import { mergeMap, catchError } from 'rxjs/operators';
    4. // 基于输入来决定是 resolve 还是 reject 的示例 promise
    5. const myPromise = willReject => {
    6. return new Promise((resolve, reject) => {
    7. if (willReject) {
    8. reject('Rejected!');
    9. }
    10. resolve('Resolved!');
    11. });
    12. };
    13. // 先发出 true,然后是 false
    14. const source = of(true, false);
    15. const example = source.pipe(
    16. mergeMap(val =>
    17. fromPromise(myPromise(val)).pipe(
    18. // 捕获并优雅地处理 reject 的结果
    19. catchError(error => of(`Error: ${error}`))
    20. )
    21. )
    22. );
    23. // 输出: 'Error: Rejected!', 'Resolved!'
    24. const subscribe = example.subscribe(val => console.log(val));

    其他资源

    • fromPromise :newspaper: - 官方文档
    • 创建操作符: from, fromArray, fromPromise :video_camera: :dollar: - André Staltz
    • fromPromise - 指南

    :file_folder: 源码: https://github.com/ReactiveX/rxjs/blob/master/src/internal/observable/fromPromise.ts