从node.js中的stdin读取和阻塞

时间:2014-02-01 02:58:21

标签: javascript node.js

如何让我们的node.js应用程序暂停/阻止,在运行其余代码之前等待stdin?我有:

var readline = require('readline');

var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

var ECRYPTION_KEY;
rl.question('Provide the global encryption key:', function(encyrptionKey) {
    ECRYPTION_KEY = encyrptionKey;
    rl.close();
});

var https = require('https');

https.createServer({ ... });
console.log("https server running...");

现在,我立即看到Provide the global encryption key:https server running..。 I.E.在创建stdin服务器之前,不会阻止并等待https

2 个答案:

答案 0 :(得分:1)

在从rl回调收到加密密钥之前,正在创建服务器。

答案 1 :(得分:0)

你做不到。永远。 Node.js被设计为一直运行而不会阻塞,等待stdin做某事是一种误用。

PS:实际上你可以(带纤维),但这不是一个很好的理由使用它们。

adeneo的建议是正确的,只需将createServer函数放入回调中。