我正在使用RxJS ajax
为http请求创建一个observable,该请求依赖于来自异步源(如异步存储)的值。非异步版本如下:
export const search = term =>
ajax(`/search?term=${term}`);
稍后我会将其用作以下内容:
fromEvent(element, 'keyup').pipe(
switchMap(term => search(term))
);
这很好用,但是我需要更新ajax函数来设置身份验证令牌头。此令牌存储在异步存储中。我可以像这样更新函数:
export const search = async term => {
const token = getFromStorage('token');
return ajax(`/search?term=${term}`,
{ headers: { token } }).toPromise();
};
这确实有效,但现在我需要在需要呼叫搜索时使用fromPromise
。这不是世界上最糟糕的事情,但我有点担心我会失去switchMap
的好处(我还没有测试过)。似乎可以有一种更简洁的方法来生成可能具有异步源而不必创建Promise的Observable。
有没有办法生成依赖于另一个异步操作(Observable或Promise)的observable?