javascript - Egenskapen then finns inte på typen void, även om jag returnerar ett Promise


Jag har en funktion som hämtar en bots inventering på frontend

  getBotInventory() {
    this.socket.emit('get bot inv');
    this.socket.on('bot inv', (botInventory) => {
      return new Promise((resolve, reject) => {
        if (botInventory.error) {
          return reject(botInventory.error);
        }
        this.botInventory = botInventory;
        resolve(botInventory);
      });

    });
  }

Som du kan se, returnerar det ett Promise.

När jag försöker ringa det

getBotInventory() {
    this.userService.getBotInventory().then(botInv..)
  }

Jag får

fel TS2339: Egenskapen 'then' finns inte på typen 'void'.

Självklart returnerar det ett Promise. Kan någon påpeka var problemet ligger?

Svar #1

Det kan vara uppenbart för dig, men det är det inte för mig.

Titta på din funktion, rensad från callbacks.

getBotInventory() {
  this.socket.emit('get bot inv');
  this.socket.on('bot inv', (botInventory) => {...});
}

Jag ser inget return-uttryck där!

Relaterade artiklar