2017-10-14 70 views
1

我是node.js中的新手。我知道它使用異步編程,但我需要編寫一個循環讓用戶輸入一些數據,然後在用戶輸入數據後,一次又一次地詢問,直到循環結束。 我試過這段代碼,但輸出是這樣的:
Insert Data?
插入數據?
插入數據?
當我想輸入的東西就好像:aaallliii如何在node.js中逐行運行代碼

for (index=1;index<=3;index++){ 
    console.log("Insert Data?"); 
    prompt.start(); 
    prompt.get(['data'], function (err, result) 
    { 
    }); 
    } 

我怎麼能寫使用它像正常循環的代碼?

+0

'我知道它僅使用異步programming'異步部分是異步的,同步部分是...鼓輪...同步...什麼是你的代碼中的'提示符'? –

+0

@JaromandaX我在命令行中運行代碼,提示可以幫助我向用戶詢問我想要的數據。我發現它在stackoverflow。 –

+1

使用'async/await'查看最簡單的解決方案,否則查看Promises並解析它們。 – jackarms

回答

3

如果您能夠使用節點v7.6,則此解決方案使用async/await

async/await允許您使用異步內容並以看起來更加同步的方式編寫代碼。在你的情況下,你想提示用戶輸入,然後等待他們的迴應,然後繼續。該await關鍵詞讓你寫同樣的方式代碼,「堵」,直到用戶給定的輸入(雖然一切仍是異步的,它基本上只是語法糖)

async function insertData() { 
    for (let index = 1; index <= 3; index++) { 
     console.log("Insert Data?"); 
     prompt.start(); 
     let input = await new Promise(resolve => { 
      prompt.get(['data'], (err, result) => { 
       resolve(result); 
      } 
     }); 
     // do something with input 
    } 
} 

insertData().then(() => console.log("Done prompting.")); 
+0

謝謝。這正是我想要的。 –