有點僞代碼來解釋標題:RxJs獲得原始事件裏面沒有訂閱傳承
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});
我覺得僞代碼說明一點的是我想做的事情。 到目前爲止,我試圖擴展observable,但是如果我這樣做,它看起來好像我需要重寫observable中的運算符。
我幾乎要提供元數據的事件。
我不想通過myObject的下降,因爲這是使用的庫外,我將訂閱我的代碼庫中的觀測,但鏈接的觀察到的將被放在外部。
人對如何實現這一目標的任何想法?
爲背景, 我試圖創建一個純粹的RxJs HTTP庫,讓我做到以下幾點:
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))
的內在邏輯和這些對象的處理已經寫入,只需要將該響應對象發送回。
我在RxJS的知識是有限的,但是,你不必將myObject作爲參數傳遞給下一個? 'source.next(newNumber,myObject)'如果這是不可能的,你可以做一些參數解構'source.next({newNumber,myObject})'。 – Baruch
@Baruch,這是我試圖通過這篇文章避免的一件事,因爲我不希望框架的用戶必須將響應傳遞給他們製作的每個鏈。如果你想象一個端點通過平面地圖調用另一個端點,你立即失去了響應,或者不得不在任何地方都使用選擇器函數,這對我來說會破壞可用性:) –
你會考慮包裝'response'對象你需要一個可觀察的?在這種情況下,您可以'將'apiEndpoint $'和'$ $'合併到一起,然後在回調中訪問這兩個。 – atomrc