第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在類中從自身調(diào)用方法?

如何在類中從自身調(diào)用方法?

牧羊人nacy 2022-06-05 09:48:43
我目前正在實現(xiàn)一個 WebSocket。因為我想在連接關(guān)閉時重新連接,所以我實現(xiàn)了一個connect()函數(shù)并嘗試在 close 事件中從它本身調(diào)用它,但不幸的是它不起作用:class WebSocket {    constructor( options = {} ) {        this.url = "ws://localhost:8181";        this.connect();    }    connect() {        let ws = new WebSocket( this.url );        ws.onclose = function ( event ) {            console.log( `WebSocket connection to ${ this.url } failed: ${ event.reason }` );            setTimeout( function () {                connect();            }, 5000 );        };    }} 拋出的錯誤是:Uncaught ReferenceError: connect is not defined我從來沒有在 JavaScript 中使用過類,所以我有點困惑。也許有人可以給我一個提示?
查看完整描述

2 回答

?
哈士奇WWW

TA貢獻1799條經(jīng)驗 獲得超6個贊

存在三個問題:

  • 要引用對象的屬性,請使用.,例如obj.prop。在這里,您要在其上引用屬性的對象是實例,this

  • 您需要確保this引用內(nèi)部的類實例setTimeout,因此使用箭頭函數(shù)

  • WebSocket類名與詞法范圍屬性沖突globalThis.Websocket- 將您的類命名為其他名稱:

class Connector {

  constructor(options = {}) {

    this.url = "ws://localhost:8181";

    this.connect();

  }

  connect() {

    const ws = new WebSocket(this.url);

    ws.onclose = (event) => {

      console.log(`WebSocket connection to ${ this.url } failed: ${ event.reason }`);

      setTimeout(() => {

        this.connect();

      }, 5000);

    };

  }

}


查看完整回答
反對 回復 2022-06-05
?
米琪卡哇伊

TA貢獻1998條經(jīng)驗 獲得超6個贊

我找到了解決方案。因為this引用ws.onclose,我需要在我的函數(shù)頂部立即保護它:


class Connector {

    constructor(options = {}) {

        this.url = "ws://localhost:8181";

        this.connect();

    }

    connect() {

        const ws = new WebSocket(this.url),

              self = this;


        ws.onclose = (event) => {

            console.log(`WebSocket connection to ${ this.url } failed: ${ event.reason }`);

            setTimeout(() => {

                self.connect();

            }, 5000);

        };

    }

}


查看完整回答
反對 回復 2022-06-05
  • 2 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號