2016-11-21 8 views
0

Ich versuche, die combineAll aus der beobachtbaren Funktion zu verwenden, aber ich erhalte die folgende Fehlermeldung erhaltenAngular2 mit combineAll von rxjs

TypeError: unknown type returned 
at Object.subscribeToResult (http://164.132.97.206:10000/vendor.bundle.js:35082:27) 
at CombineLatestSubscriber._complete (http://164.132.97.206:10000/main.bundle.js:39140:46) 
at CombineLatestSubscriber.Subscriber.complete (http://164.132.97.206:10000/vendor.bundle.js:32309:18) 
at MergeMapSubscriber.notifyComplete (http://164.132.97.206:10000/vendor.bundle.js:34474:30) 
at InnerSubscriber._complete (http://164.132.97.206:10000/vendor.bundle.js:31646:21) 
at InnerSubscriber.Subscriber.complete (http://164.132.97.206:10000/vendor.bundle.js:32309:18) 
at CatchSubscriber.Subscriber._complete (http://164.132.97.206:10000/vendor.bundle.js:32327:26) 
at CatchSubscriber.Subscriber.complete (http://164.132.97.206:10000/vendor.bundle.js:32309:18) 
at MapSubscriber.Subscriber._complete (http://164.132.97.206:10000/vendor.bundle.js:32327:26) 
at MapSubscriber.Subscriber.complete (http://164.132.97.206:10000/vendor.bundle.js:32309:18) 
at XMLHttpRequest.onLoad (http://164.132.97.206:10000/vendor.bundle.js:21511:38) 
at ZoneDelegate.invokeTask (http://164.132.97.206:10000/polyfills.bundle.js:18029:35) 
at Object.onInvokeTask (http://164.132.97.206:10000/vendor.bundle.js:15519:37) 
at ZoneDelegate.invokeTask (http://164.132.97.206:10000/polyfills.bundle.js:18028:40) 
at Zone.runTask (http://164.132.97.206:10000/polyfills.bundle.js:17918:47) 
at XMLHttpRequest.ZoneTask.invoke (http://164.132.97.206:10000/polyfills.bundle.js:18099:33) 

Hier ist der Teil des Codes i

export interface VertexOperation { 
    action: string,//add, erase, update 
    mainVertex?: string, 
    mainKey?: string, 
    vertexName: string, 
    edgeName: string, 
    vertex: any, 
    edge: any 
} 
public updateVertexEdge(operation:VertexOperation): Observable<QueryVertexConnection> { 
    return this._http.post(this._userService.apiEndPoint+'updateLink/'+operation.vertexName, operation, {headers: this._userService.getHeaders()}) 
     .map(
      (response:Response) => { 
       let res = response.json(); 
       console.log(res); 
       return (res); 
      }) 
      .catch((error:any) => Observable.throw(error.json().message || 'ServerErr')); 
} 
public updateEdges(items: Array<VertexOperation>) { 
    console.log(items); 
    return Observable.from(items).concatMap(
     (val) => { 
      return this.updateVertexEdge(val); 
     } 
    ).combineAll(); 
} 
this.updateEdges(vertexEdges).subscribe(
     (evResult) => { 
     console.log(evResult); 
     }, 
     (errEv) => { 
     console.log(errEv); 
     } 
    ); 
irgendwie bin mit

der Aufruf der api Endpunkt keine Probleme haben und das Update durchgeführt wird, aber ich halte diesen Fehler, ich bin nicht sicher, ob ich die combineAll bin mit nicht richtig, ich habe einige Post auf Stackoverflow lesen Wo es so benutzt wurde, bin ich mir nicht wirklich sicher, was daran falsch ist. Wenn jemand einige ähnliche Probleme hatte oder hatte eine bessere Möglichkeit, etwas Wunsch zu kombinieren ich wirklich dankbar sein würde, wenn Sie Ihr Wissen teilen könnten :)

Antwort

0

sollten Sie map anstelle von concatMap.

Der Fehler zeigte, dass combineAll falschen Typ erhalten. combineAll erwarten Observable of Observables, während concatMap Rückkehr eine Observable

Etwas wie folgt aus:

public updateEdges(items: Array<VertexOperation>) { 
    console.log(items); 
    return Observable.from(items).map(
     (val) => { 
      return this.updateVertexEdge(val); 
     } 
    ).combineAll(); 
} 
+0

Ich sehe: D Danke! – Darksorrow