如果我有一个方法有时会返回一个字符串,有时会返回一个导致字符串的承诺,我如何将它链接到我的 observable 中?
例子
function doSomething() {
if (Math.random() < 0.5) {
return 'test';
}
return new Promise(resolve => resolve('test'));
}
const example = of(undefined).pipe(
mergeMap(() => doSomething())
);
const subscribe = example.subscribe(val => console.log(val));
Run Code Online (Sandbox Code Playgroud)
我想总是记录“测试”。
解决该问题的一种方法是将函数传递给mergeMap函数async并传递给await的返回值doSomething,如下所示:
const example = of(undefined).pipe(
mergeMap(async () => await doSomething())
);
Run Code Online (Sandbox Code Playgroud)
您可以这样做,因为mergeMap期望函数返回 anObservableInput并且 Promise 是有效的ObservableInput。
这样做利用了这样一个事实:await将接受一个承诺或一个普通值 - 函数返回的承诺async将解析为该值。
| 归档时间: |
|
| 查看次数: |
4329 次 |
| 最近记录: |