簡體   English   中英

為網絡創建自定義 Rxjs Observable

[英]Create Custom Rxjs Observable for network

我是 Rxjs 的初學者,我正在做一個游戲項目,有一個網絡工具是:

通過 function sendPacket發送,服務器響應功能onReceived

sendPacket: function(packet) {
  this._tcpClient.sendToServer(packet);
}
onReceived: function (pkg) {
}

我想重構當前的網絡結構,如 Angular HttpClient: sendPacket return an Observable我只需要像這樣subscribe

network.sendPacket(myPacket).subscribe(response => ...)

我怎樣才能實現這個想法? 太感謝了

如果我正確理解您的問題,那么問題在於您的 onReceived 是一個“全局” function ,它與數據包的發送沒有直接關聯。 您需要在其中存儲觀察者以供以后使用,以便在 onReceived 中訪問它。 就像是:

let savedObserver = null;

sendPacket: function(packet) {
  return new Observable(observer => {
    this._tcpClient.sendToServer(packet);
    savedObserver = observer;
  })
}

onReceived: function (pkg) {
  if (savedObserver) {
    savedObserver.next(pkg);
    savedObserver.complete();
    savedObserver = null;
  }
}

但是,以上假設一次只能有 1 個請求。 為了允許多個並行請求,您需要為每個請求存儲一個可觀察對象,然后能夠將響應鏈接到請求並找到正確的可觀察對象。

這篇文章有答案,它是為絕對初學者准備的,所以你應該抓住一切。

如果您只對發出請求的 Observable 感興趣,請向下滾動到最后

https://justeugen.medium.com/rxjs-for-beginners-1-c87f92f4a9d2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM