编辑:
.toPromise()
现在在 RxJS 7 中已弃用(来源:https ://rxjs.dev/deprecations/to-promise )
新答案:
作为已弃用的 toPromise() 方法的替代,您应该使用两个内置静态转换函数 firstValueFrom 或 lastValueFrom 之一。
例子:
import { interval, lastValueFrom } from 'rxjs';
import { take } from 'rxjs/operators';
async function execute() {
const source$ = interval(2000).pipe(take(10));
const finalNumber = await lastValueFrom(source$);
console.log(`The final number is ${finalNumber}`);
}
execute();
// Expected output:
// "The final number is 9"
老答案:
如果toPromise
不推荐使用,您可以使用.pipe(take(1)).toPromise
,但正如您在此处看到的,它没有被弃用。
因此,请toPromise
按上述方式使用 (RxJs 6):
//return basic observable
const sample = val => Rx.Observable.of(val).delay(5000);
//convert basic observable to promise
const example = sample('First Example')
.toPromise()
//output: 'First Example'
.then(result => {
console.log('From Promise:', result);
});
异步/等待示例:
//return basic observable
const sample = val => Rx.Observable.of(val).delay(5000);
//convert basic observable to promise
const example = await sample('First Example').toPromise()
// output: 'First Example'
console.log('From Promise:', result);
在这里阅读更多。