Observable.zip 不是函数
Posted
技术标签:
【中文标题】Observable.zip 不是函数【英文标题】:Observable.zip is not a function 【发布时间】:2017-10-15 14:54:09 【问题描述】:VM95422:27 原始异常: WEBPACK_IMPORTED_MODULE_3_rxjs_Observable.
尝试了各种导入
// import 'rxjs/add/operator/zip';
// import 'rxjs/add/observable/zip-static';
// import 'rxjs/add/operator/zip';
import 'rxjs/operator/zip';
尝试这样使用它:
const zippedUsers: Observable<User[]> = Observable.zip<User>(this.usersObservable);
Angular 4,TypeScript 2.1.6
package.json:
"rxjs": "^5.1.0",
【问题讨论】:
import "rxjs/add/observable/zip";
reactivex.io/rxjs/manual/installation.html
您能否考虑更改已接受的答案,因为它对于最近的 RxJS 版本不再正确?
【参考方案1】:
也许像
import Observable from "rxjs/Observable";
import "rxjs/add/observable/zip";
然后是这样的:
Observable.zip(this.someProvider.getA(), this.someProvider.getB())
.subscribe(([a, b]) =>
console.log(a);
console.log(b);
);
【讨论】:
【参考方案2】:5.5 rxjs:
import zip from "rxjs/observable/zip";
const zippedUsers: Observable<User[]> = zip(this.usersObservable);
【讨论】:
我花了 90 多分钟试图找到这个解决方案。我从谷歌找到的材料或文档都没有帮助。但你的回答确实如此。【参考方案3】:RxJS 6
从 RxJS 6 开始...
Observable
creation functions
如from()
、fromPromise()
、of()
、zip()
应该这样导入:
import from, fromPromise, of, zip from 'rxjs';
并用作普通函数调用:
const data: Observable<any> = fromPromise(fetch('/api/endpoint'));
Pipeable operators
应该像这样导入:
import map, filter, scan from 'rxjs/operators';
并用作pipe()
方法参数:
const someObservable: Observable<number> = ...;
const squareOddVals = someObservable.pipe(
filter((n: number) => n % 2 !== 0),
map(n => n * n))
.subscribe((n: number): void => ...);
【讨论】:
问题明确提到了 rxjs 5,所以这并没有提供问题的答案。 @IngoBürk:我相信 RxJS 5 只是 OP 在询问时(超过 2 年前)使用的版本。如今,我认为如果这个问题与当前版本的库保持同步对社区更有利,特别是考虑到这是谷歌搜索该问题的首要问题。 @IngoBürk:另外,通知 this 答案提供了与 RxJS 5.5 相关的信息,这也是比 OP 要求的更高版本。但是已经半年没有人抱怨了:) @AlexanderAbakumov 非常感谢:从接受的答案导入在更新 6->7 后停止工作,从 'rxjs' 导入 Observable ;作品以上是关于Observable.zip 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 如何将数据传递给 ObservedObject 函数
使用大量 if-else 语句和 JSON 化简化 PL/pgSQL 函数
IOS RxSwift 从 Observable 数组创建 Observable 数组
ObservableCollection 列表找不到方法 AddRange
从 ngOnInit 调度操作时的 ExpressionChangedAfterItHasBeenCheckedError