Friday 17 March 2017

Node JS Instanciate classe A in classe B

I'm beginning in node.js and I just want to use my class B into my class A, but it seems not work... Here's my very simple code, I guess I do something wrong... I have 2 files (for 2 classes) :

Poney.js :

const {DeadPool} = require('./DeadPool');

class Poney {


  constructor() {
    this.regInter = setInterval(() => this.Regeneration(), 500);
    this.energy = 0;
    this.isUnicorn = false;
    this.myDeadpool = new DeadPool();
  }

  Regeneration() {
    this.energy += 10;
    console.log(`Regeneration, Vitalite : ${this.Vitalite}`);
    if (this.energy > 100) {
      console.log('Evolution');
    }
  }

  KillPoney() {
    clearInterval(this.RegInter);
  }

  evolve() {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        if (this.isUnicorn = false) {
          console.log('pas une licorne');
          if(this.energy > 100) {
            resolve();
            this.energy = 0;
            this.isUnicorn = true;
            console.log('Transformation unicorn !');
          }
          else {
            console.log('Energie insuffisante');
            reject();
          }
        }
        else {
          reject();
          console.log('Already an unicorn');
        }
      }, 1000);
    });


  }


  backPoney() {                    //Retransforme les licornes en poney
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        if (this.isUnicorn = false) {
          resolve();
          this.energy = 0;
          console.log('Back Poney to Unicorn');
        }
        else {
          reject();
          console.log('Not an Unicorn');
        }


      }, 1000);
    });
  }
}

const myDeadpool = new DeadPool();



//setTimeout(() => MyPoney.killPoney(), 10000);

module.exports = {Poney};

DeadPool.js :

const {Poney} = require('./Poney');

class DeadPool {


  constructor() {

    this.regInterDead = setInterval(() => this.regeneration(), 4000 );
    this.transInter = setInterval(() => this.makeUnicorn(), 4000 );
    this.isRegenerate = false;
    this.poneys = [];
    for (var iVal = 0; iVal < 10; iVal++) {

      this.poneys.push(new Poney())
    }

  }
  makeUnicorn(){
    this.makeEvolve()
      .then(() =>  console.log('Evolve ok !'))
      .catch(() => console.log('error evolve'));
  }

  regeneration(){
    this.checkPoney()
      .then(() => console.log('Regeneration Deadpool'))
      .catch(() => console.log('Pas de regeneration'));
  }



  checkPoney() {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        var iNumPoney = Math.floor((Math.random() * 10) + 1);
        var bConard = (Math.floor((Math.random() * 1) + 1) >= 1);      // 1 chance sur 2 d'utiliser la licorne
        if (bConard){
          this.poneys[iNumPoney].backPoney()
            .then(() =>  console.log('Licorn to Poney ok'))
            .catch(() => console.log('back licorn rejected'));
          this.isRegenerate = true;
          resolve();
        }

        else{
          console.log('Je ne suis pas un conard');
          reject();
        }
      }, 1000);
    });
  }


  makeEvolve() {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        var iNumPoney = Math.floor((Math.random() * 10) + 1);
        var bGentil = (Math.floor((Math.random() * 1) + 1) > 1);      // 1 chance sur 2 de la faire evoluer
        if(bGentil) {
          poneys[iNumPoney].evolve()
            .then(() =>  console.log('TRANSFORMATION !'))
            .catch(() => console.log('Evolution impossible'));
          resolve();

        }
        else {
          console.log('Pas gentil');
          reject();
        }


      }, 1000);
    });


  }
}


module.exports = {DeadPool};

And I have an Error in the constructor of Poney when I'm trying to instanciate new Poney :

*"C:\Program Files (x86)\JetBrains\WebStorm 2016.3.3\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" C:\Users\Stef\Desktop\Cours\JS\Poney.js
C:\Users\Stef\Desktop\Cours\JS\DeadPool.js:19
      this.poneys[iVal] = new Poney();
                          ^
TypeError: Poney is not a constructor
    at new DeadPool (C:\Users\Stef\Desktop\Cours\JS\DeadPool.js:19:27)
    at Object.<anonymous> (C:\Users\Stef\Desktop\Cours\JS\Poney.js:74:20)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.runMain (module.js:605:10)
    at run (bootstrap_node.js:422:7)
    at startup (bootstrap_node.js:143:9)*

Thank you for your help..



via BlackStef

No comments:

Post a Comment