程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 游戲-nodejs的readline如何變成同步?還是采用一個異步循環?

游戲-nodejs的readline如何變成同步?還是采用一個異步循環?

編輯:編程綜合問答
nodejs的readline如何變成同步?還是采用一個異步循環?

我在給一個小朋友教編程,在使用javascript/node.js 已經講到條件語句,循環,函數。現在要做一個猜數字的游戲,但我發現readline模塊只支持異步方式。這意味著我不能采取這樣的邏輯。

while(true){
   guess=input(); // 我需要在這裡block 
   ans=checkGuess(guess); //返回-1,0,1
   displayAns(ans);
   if(ans===0)break;
}

當然node.js非常強調異步,這意味著我需要在input裡回調checkGuess,在checkGuess裡回調displayAns,而在displayAns裡再回調input——這似乎給剛學編程的小孩過於復雜了。而采用像CPS這樣的技術則更是不太合適這個場合。。。

請問,是否有一種辦法將其改為同步(用第三方庫async/syncasync/node-fibers)?還是有一個更合適的辦法來做這個循環?或者改用網頁上的prompt?還是改用一個編程語言?

最佳回答:


就是設計成異步,你又要同步,不用它就同步了
你要想簡單的說明下而不是學習node.js,建個html文件
寫個javascript演示不就行了

var bFlag   =true;
var num     =0;
function init(){    
    while(bFlag){
        var ret = prompt("請輸入內容!","");
        switch(ret){
        case "1":
            check(1,num++);
        break;
        case null:
        exitGuess(false);
        break;
        default:        
        break;
        }       
    }
}
function exitGuess(b){
    bFlag =b;
}
function check(code,num){
    //code means choose first
    //num  means the answer
    alert("This answer num is: "+num+"\r\nYou choose: "+code+" \r\nYou are smart.");
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved