我非常新的NodeJS,我試圖使用承諾提示用戶輸入按特定的順序。這裏是我的代碼:Node.js:多個然後沒有以正確的順序執行
var prompt = require('prompt');
var promising = require("promise-adapter");
var promptGet = promising(prompt.get);
prompt.start();
function Game() {
playerOneName = '';
playerTwoName = '';
pOneType = true;
}
//prompts the user for two names and assigns them
//to player one and player to for the game object
Game.prototype.getName = function (resolve){
promptGet(['playerName1', 'playerName2']).then(function(result){
this.playerOneName = result.playerName1;
this.playerTwoName = result.playerName2;
})
.then(function() {
resolve();
});
}
Game.prototype.getType = function (resolve) {
//console.log('made it to the function');
promptGet(['Player1Type']).then(function(result){
if (result.Player1Type !== "X"){ this.pOneType = false;}
//console.log(this.pOneType);
})
.then(function(){
resolve();
});
}
Game.prototype.displayPlayers = function(resolve) {
if (pOneType === true){
console.log(this.playerOneName + " will be X's");
console.log(this.playerTwoName + " will be O's");
}
else {
console.log(this.playerOneName + " will be O's");
console.log(this.playerTwoName + " will be X's");
}
console.log("Let's Get Started!");
}
var test = new Game();
new Promise(function(resolve, reject){
test.getName(resolve);
})
.then(function(resolve, reject){
test.getType();
})
.then(function(resolve, reject){
test.displayPlayers();
});
我知道,這是非常草率的代碼,但即便如此,我認爲它應該工作使得test.displayPlayers()執行之前 test.getType(),但不是這樣。謝謝你的幫助!我也樂意聽取關於如何清理代碼的建議。
但是,當我這樣做時,displayPlayers()在getType()有機會運行之前執行,導致未定義的輸出。 – cbrauns