Ich verwende einen Standard-WebSocket, der Nachrichten sendet und eventuell eine Antwort erhält. Zuvor habe ich $q.defer
verwendet, das verzögerte Objekt gespeichert und eine Zusage zurückgegeben. Der Antworthandler würde das gespeicherte verzögerte Objekt nachschlagen und es unter Verwendung eines Werts auflösen.Defer Observables
Ist dies mit Observablen möglich?
// As part of the websocket setup
websocket.onmessage = function(message) {
uuid = message.someResponse.uuid;
this._observables[uuid].create(function(observer) {
observer.onNext(response);
observer.onCompleted();
});
}
public sendRequest(request : any) : Observable<any> {
this.sendMessage(request);
return this._observables[request[Object.keys(request)[0]].uuid] = new Observable();
}
// Inside some requesting method
var observable = this.sendRequest(request);
observable.subscribe(
response => console.log(response),
response => console.log(response.error),
() => {
delete this._callbacks[uuid];
}
);
nicht das Rad neu erfinden Sie, RxJS bereits WebSockets unterstützen. –