在Angular 7+中,你可以使用from
操作符将一个Promise转换为Observable。以下是一个代码示例:
import { from } from 'rxjs';
// 创建一个Promise
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise resolved');
}, 2000);
});
// 将Promise转换为Observable
const myObservable = from(myPromise);
// 订阅Observable来获取Promise的结果
myObservable.subscribe(result => {
console.log(result);
});
在这个示例中,我们首先创建了一个Promise,它在2秒后解析为字符串"Promise resolved"。然后,我们使用from
操作符将这个Promise转换为Observable。最后,我们订阅Observable,并在订阅回调函数中打印出Promise的结果。
请注意,由于Promise只会有一个结果,所以Observable只会发出一个值,然后完成。如果你想要在每次Promise解析时都发出值,你可以使用map
操作符来转换Observable流。以下是一个示例:
import { from } from 'rxjs';
import { map } from 'rxjs/operators';
// 创建一个Promise
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise resolved');
}, 2000);
});
// 将Promise转换为Observable并使用map操作符转换流
const myObservable = from(myPromise).pipe(
map(result => 'Mapped: ' + result)
);
// 订阅Observable来获取转换后的结果
myObservable.subscribe(result => {
console.log(result);
});
在这个示例中,我们使用map
操作符将Promise的结果转换为一个带有前缀"Mapped: "的新字符串。然后,我们订阅Observable并打印出转换后的结果。