我有一个函数,它将ID作为参数并进行HTTP调用,具体取决于ID。它返回一个Observable。我希望不同参数的调用完全独立,但它们相互影响。
我用左
RxJS 5.0.0-beta.2
Angular 2.0.0-beta.7 for http calls
打字稿1.8.2
代码:
getCharacterDetails (id : number) : Observable<CharacterDetails> {
let keys : SpreadsheetKeys = this.characters[id];
if (!keys) {
return null;
}
let frontUrl : string = `${BASE_URL}/${CELLS}/${keys.spreadsheetKey}/${keys.frontWorksheetKey}/${OPTIONS}`;
let backUrl : string = `${BASE_URL}/${CELLS}/${keys.spreadsheetKey}/${keys.backWorksheetKey}/${OPTIONS}`;
return Observable.forkJoin(
this.http.get(frontUrl).map(response => response.json()),
this.http.get(backUrl).map(response => response.json()))
.map((response : any[]) => {
let character : CharacterDetails = EMPTY_MODEL;
console.log(JSON.stringify(character)); // The 1st console.log
applyFrontSheetToCharacter(response[0], character);
applyBackSheetToCharacter(response[1], character);
console.log(JSON.stringify(character)); // The 2nd console.log
return character;
});
}
预期行为:
我打电话给
getCharacterDetails(1).subscribe((details) => { this.details = details }));
第一个console.log打印我的EMPTY_MODEL
第二个console.log打印ID 1的字符模型。
getCharacterDetails(2).subscribe((details) => { this.details = details });
实际行为:
我打电话给
getCharacterDetails(1).subscribe((details) => { this.details = details }));
第一个console.log打印我的EMPTY_MODEL
第二个console.log打印ID 1的字符模型。
getCharacterDetails(2).subscribe((details) => { this.details = details });
为什么2个电话不完全独立?第二次通话如何知道第一次通话中的数据?
答案 0 :(得分:1)
问题很简单,我完全滥用了EMPTY_MODEL。它基本上是我在.map()函数中编辑的类范围变量。 与RxJS,Angular或HTTP
无关的愚蠢错误