Ein wenig Pseudo-Code unten vorbei, den Titel zu erklären:RxJs ursprüngliche Ereignis innerhalb abonnieren immer ohne
Subject source = new Subject();
function sendInNewResource(newNumber, anotherVariable) {
source.next(newNumber);
}
const newSource = source
.map((myNumber) => myNumber++);
newSource.subscribe((data) => {
//How can I access myObject here?
});
sendInNewResource(1, {myObject});
Ich denke, die Pseudo-Code ein wenig von dem, was erklärt, was ich tun möchte. Bis jetzt habe ich versucht, das Observable zu erweitern, aber wenn ich das tat, sieht es so aus, als müsste ich die Operatoren innerhalb des Observablen überschreiben.
Ich möchte fast Metadaten zum Ereignis bereitstellen.
Ich möchte nicht das myObject übergeben, da dies eine Bibliothek für den externen Gebrauch ist, werde ich die Observables innerhalb meiner Codebasis abonnieren, aber Verkettung der beobachtbaren wird extern erfolgen.
Wer hat irgendwelche Ideen, wie man das erreicht?
Für Kontext, Ich versuche, eine rein RxJs http Bibliothek zu erstellen, die mir erlauben wird, wie folgt vorgehen:
const server$ = RxHttpServer(server)
const api$ = server.filter((request) => request.url.startsWith('/api'));
const apiEndpoint$ = api.map(() => ({
status: 400,
body: 'this is an api endpoint',
headers: {
}
}));
// Inside my library, note the use of the response object that I don't have access to:
apiEndpoint.subscribe((dataToSend) => response.write(dataToSend))
die innere Logik und Handhabung dieser Objekte wurde bereits geschrieben, nur müssen das Antwortobjekt, an das zurückgesendet werden soll.
Mein Wissen in RxJS ist begrenzt, aber, müssen Sie myObject nicht als Parameter an die nächste übergeben? 'source.next (newNumber, myObject)' Wenn das nicht möglich ist, könntest du ein Argument dekonstruieren 'source.next ({newNumber, myObject})'. – Baruch
@Baruch, das ist die eine Sache, die ich mit diesem Beitrag zu vermeiden versuche, da ich nicht möchte, dass Benutzer des Frameworks die Antwort für jede Kette, die sie machen, weiterleiten müssen. Wenn Sie sich vorstellen, dass ein Endpunkt einen anderen Endpunkt über eine Flatmap aufruft, haben Sie sofort die Antwort verloren oder müssten die Selektorfunktion überall verwenden, was die Benutzerfreundlichkeit ein wenig ruiniert. –
Würden Sie das "response" -Objekt einschließen? Sie brauchen in einer beobachtbaren? In diesem Fall können Sie sowohl 'apiEndpoint $' als auch 'response $' zusammen "kombinieren" und dann auf diese 2 im Callback zugreifen. – atomrc