1
我開始在node.js中,我只想用我的類B到我的類A中,但它似乎不工作...這是我非常簡單的代碼,我想我做錯了什麼......我有2個文件(2班):節點JS Instanciate類A在類B
Poney.js:
const {DeadPool} = require('./DeadPool');
class Poney {
constructor() {
this.regInter = setInterval(() => this.Regeneration(), 500);
this.energy = 0;
this.isUnicorn = false;
}
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};
我在小馬駒的構造一個錯誤,當我試圖實例化新的小馬駒:
*"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)*
謝謝您的幫助..
您的要求是循環參考。我會盡量避免這種情況。 一個文件開始執行,並在它實例化任何事情之前,它會關閉並嘗試執行另一個文件。其他文件然後執行相同的操作。既沒有創建出口,也沒有在要求的結果中得到任何回報。 (類似的東西) – Chris