gpt4 book ai didi

angular - Observable.forkJoin 和数组参数

转载 作者:太空狗 更新时间:2023-10-29 16:48:15 25 4
gpt4 key购买 nike

在 Observables forkJoin 文档中,它说 args 可以是一个数组,但它没有列出这样做的示例:

https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md

我尝试了一个与我列出的(下面)类似的函数,但出现了一个错误:

:3000/angular2/src/platform/browser/browser_adapter.js:76 

EXCEPTION: TypeError: Observable_1.Observable.forkJoin is not a function

下面是我的函数的剪切版本:

processStuff( inputObject ) {
let _self = this;

return new Observable(function(observer) {
let observableBatch = [];

inputObject.forEach(function(componentarray, key) {
observableBatch.push(_self.http.get(key + '.json').map((res: Response) => res.json()));
});

Observable.forkJoin(
observableBatch
// );
).subscribe(() => {
observer.next();
observer.complete();
});

});
}

我的问题的根源与在继续之前结束的循环有关:Angular2 Observable - how to wait for all function calls in a loop to end before proceeding?

但我还没有完全掌握 forkJoin 与数组的正确用法以及这样做的正确语法。

非常感谢您提供的帮助。

注意:返回 Observable 的第三个函数的示例

thirdFunction() {
let _self = this;

return Observable.create((observer) => {
// return new Observable(function(observer) {
...

observer.next(responseargs);
observer.complete();
});
}

processStuff(inputObject) {
let _self = this;
let observableBatch = [];

inputObject.forEach((componentarray, key) => {
observableBatch.push(_self.thirdFunction().map((res: Response) => res.json()));
});

return Observable.forkJoin(observableBatch);
}

elsewhere() {
this.processStuff(inputObject)
.subscribe()
}

最佳答案

您需要导入默认未加载的运算符。这就是 EXCEPTION Observable.xxxx is not a function 通常的意思。您可以通过将完整的 rxjs 添加到您的 Bootstrap 来导入所有运算符,例如:

import 'rxjs/Rx'

或者通过导入特定的运算符,在您的情况下:

import 'rxjs/add/observable/forkJoin'

关于您的代码的另一个观察/建议:尝试坚持使用一种语法。你在混合使用 es5、es6、typescript……虽然它在工作,但从长远来看只会让你感到困惑。此外,如果您刚开始使用 Observable,请尽量避免使用 new Observable() 并改用创建运算符;

processStuff( inputObject ) {
let observableBatch = [];

inputObject.forEach(( componentarray, key ) => {
observableBatch.push( this.http.get( key + '.json').map((res: Response) => res.json()) );
});

return Observable.forkJoin(observableBatch);
}

elsewhere() {
this.processStuff( inputObject )
.subscribe()
}

最后,引用正确的文档——Angular2 使用RxJS v5您提供的链接适用于 RxJS v4。 v5 的文档仍然不完整,但您可以在许多源文件中找到描述。

关于angular - Observable.forkJoin 和数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35676451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com