- toPromise
- 签名:
toPromise() : Promise
- 签名:
- 将 observable 转换成 promise 。
- 示例
- 示例 1: 基础的 Promise
- 示例 2: 使用 Promise.all
- 示例
- 其他资源
toPromise
签名: toPromise() : Promise
将 observable 转换成 promise 。
示例
示例 1: 基础的 Promise
( jsBin |
jsFiddle )
import { of } from 'rxjs/observable/of';
import { toPromise, delay } from 'rxjs/operators';
// 返回基础的 observable
const sample = val => of(val).pipe(delay(5000));
// 将基础的 observable 转换成 promise
const example = sample('First Example')
.pipe(toPromise())
// 输出: 'First Example'
.then(result => {
console.log('From Promise:', result);
});
示例 2: 使用 Promise.all
( jsBin |
jsFiddle )
import { of } from 'rxjs/observable/of';
import { delay } from 'rxjs/operators';
// 返回基础的 observable
const sample = val => of(val).pipe(delay(5000));
/*
将每个 observable 转换成 promise 并使用 Promise.all
来等待所有 promise 解析完成
*/
const example = () => {
return Promise.all([
sample('Promise 1').pipe(toPromise()),
sample('Promise 2').pipe(toPromise())
]);
}
// 输出: ["Promise 1", "Promise 2"]
example().then(val => {
console.log('Promise.all Result:', val);
});
其他资源
- toPromise - 官方文档
源码: https://github.com/ReactiveX/rxjs/blob/master/src/internal/operators/toPromise.ts