아코더
90
2019-10-18 10:42:44 작성 2019-10-18 10:43:57 수정됨
3
139

노드.js 무한루프 어떻게 만드나요?


간단히 설명드리자면, 


입력받고 그에맞는 함수를 실행해주는것입니다.


현재 while 을씌웠음에도

node ~~.js 프로그램에서  무한루프가 돌지않고

한번입력받기+한번함수실행 & 노드가 꺼진후 윈도우 cmd 로 돌아가버리네요.


while문을 잘못사용한것인지

다른것을 사용해야하는지 궁금합니다.

const fs = require('fs')
const { promisify } = require('util')
//현재디렉토리 경로 만들기
const path = require('path'//process.cwd() , 
//Async 함수 생성
const readFileAsync = promisify(fs.readFile)
const lsAsync = promisify(fs.readdir)
const mkdirAsync = promisify(fs.mkdir)//(path,[mode],callback)
const rmdirAsync = promisify(fs.rmdir)//(path,callback)
const delAsync = promisify(fs.unlink)
const writeAsync = promisify(fs.writeFile)
const cdAsync = promisify(process.chdir)
//////////입력받는 함수 만들기
const { createInterface } = require('readline')
const reader = createInterface({
    input: process.stdin,
    output: process.stdout
})
reader.question[promisify.custom= (question=> {
    return new Promise((resolve=> {
        reader.question(questionresolve)
    })
}
const question = promisify(reader.question)

///////메인함수

async function _main() {
    var a=1;
while(a===1){
    //명령어 입력 및 파싱
    const answer = await question(process.cwd() + "$")
    reader.close()
    const args = answer.split(" ")
    //함수실행
    try {
        //1.ls
        if (args[0=== "ls") {
            if (!args[1]) {

                const ls = await lsAsync("./", (errfiles=> {
                    files.forEach(file => {
                        console.log(file)
                    });
                });
            }
            else {
                const ls = await lsAsync(args[1], (errfiles=> {
                    files.forEach(file => {
                        console.log(file)
                    });
                });
            }
        }

        // 2.cd
        if (args[0=== "cdAsync") {
            const ls = await cdAsync(args[1], (err=> {
            });
        }
        //3.read [file]
        if (args[0=== "read") {
            const read = await readFileAsync(args[1], 'utf8', (errresult=> {
                console.log(result);
            })
        }

        //4.write [file] [data]

        if (args[0=== "write") {
            const read = await writeAsync(args[1], args[2], (err=> {
            })
        }

        //5.del [file]
        if (args[0=== "del") {
            const mkdirr = await delAsync(args[1], function (err) {
            })

        }
        //6.mkdir [dir]
        if (args[0=== "mkdir") {
            const mkdirr = await mkdirAsync(args[1], args[2], function (err) {

            })

        }

        //7.rmdir [dir]
        if (args[0=== "rmdir") {
            const mkdirr = await rmdirAsync(args[1], function (err) {

            })

        }
    
    }
    catch (err) {
        console.log(err);
    }

}
}

_main();


0
0
  • 답변 3

  • 어쩌다
    5k
    2019-10-18 10:49:25
    while(true) ?
    0
  • youngyoung
    672
    2019-10-18 10:59:59


    for(;;) { console.log(1+1); }


    0
  • Hide_D
    333
    2019-10-19 02:26:39 작성 2019-10-19 02:27:14 수정됨

    그야 reader.close()를 해버렸으니, 더이상 데이터를 받아올 수가 없겠죠?

    에러로 뻗은겁니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.