Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6类方法返回未定义_Javascript_Node.js_Class_Ecmascript 6 - Fatal编程技术网

Javascript ES6类方法返回未定义

Javascript ES6类方法返回未定义,javascript,node.js,class,ecmascript-6,Javascript,Node.js,Class,Ecmascript 6,我正在使用Node,Babel,Express,我有这个代码 import express from 'express'; import httpinvoke from 'httpinvoke'; export class lolApi{ constructor(summoner, region) { this.summoner = summoner; this.region = region; this.methods = { "currentGam

我正在使用Node,Babel,Express,我有这个代码

import express from 'express';
import httpinvoke from 'httpinvoke';

export class lolApi{

  constructor(summoner, region) {
    this.summoner = summoner;
    this.region = region;
    this.methods = {
      "currentGame": `/observer-mode/rest/consumer/getSpectatorGameInfo/${this.region}/`,
      "matchList": `/api/lol/${this.region}/v2.2/matchlist/by-summoner/`,
      "summonerName": `/api/lol/${this.region}/v1.4/summoner/by-name/`
    };

    this.domain = `https://${this.region}.api.pvp.net`;

    this.apiKey = "xxxxxxxxxx";
  }

  getSummonerId() {
    let url = `${this.domain}${this.methods.summonerName}${this.summoner}?api_key=${this.apiKey}`;
    httpinvoke(url, 'GET').then((res) => {
       this.data = JSON.parse(res.body);
      return this.data;
    }, (err) => {
      console.log(err);
    });
  }
}


export default lolApi;
但是,当初始化类时

let lolapi = new lolApi(summoner, region);
let lolData = lolapi.getSummonerId();
console.log(lolData);

getcourgerid
方法返回undefined,有什么想法吗?

您的
getcourgerid
函数是异步的。要获取返回值,必须使用
回调
函数或返回
承诺
。您几乎已经在返回承诺,但您忘记了
return
关键字

 getSummonerId() {
    let url = `${this.domain}${this.methods.summonerName}${this.summoner}?api_key=${this.apiKey}`;
    return httpinvoke(url, 'GET').then((res) => {
       this.data = JSON.parse(res.body);
      return this.data;
    }, (err) => {
      console.log(err);
    });
  }
然后你可以使用

let lolapi = new lolApi(summoner, region);
lolapi.getSummonerId().then(lolData => console.log(lolData));

您的
getcourgerid
函数是异步的。要获取返回值,必须使用
回调
函数或返回
承诺
。您几乎已经在返回承诺,但您忘记了
return
关键字

 getSummonerId() {
    let url = `${this.domain}${this.methods.summonerName}${this.summoner}?api_key=${this.apiKey}`;
    return httpinvoke(url, 'GET').then((res) => {
       this.data = JSON.parse(res.body);
      return this.data;
    }, (err) => {
      console.log(err);
    });
  }
然后你可以使用

let lolapi = new lolApi(summoner, region);
lolapi.getSummonerId().then(lolData => console.log(lolData));

GetCallerID函数不返回任何内容。请看一下承诺是如何工作的:这是因为它不返回任何内容。它只是进行一个异步调用。
lolapi.get召唤ID().then(函数(结果){console.log(结果);}),如上所述,阅读不返回任何内容中的GetCallerID函数。请看一下承诺是如何工作的:这是因为它不返回任何内容。它只是进行一个异步调用。
lolapi.get召唤ID().then(函数(结果){console.log(结果);}),如上所述,阅读关于