我试图理解何时向函数注入类似响应的东西,而不是调用函数并从中返回一些东西。在Node.js中。
Node.js中的任何函数都返回数据吗?或者是关于注入参数和使用回调的全部内容?
var sendHTMLToBrowser = require("../myCode/andrewsHelpers").sendHTMLToBrowser;
//var execExternalCommand = require("./childProcesses").execExternalCommand;
// import the exec function defined on the child_process module
var exec = require('child_process').exec;
function start(response, request) {
console.log("Request handler 'start' was called");
var body = '<!doctype html>'+
'<html lang="en">'+
'<head>'+
'<meta charset=UTF-8" />'+
'</head>'+
'<body>'+
'<p>Hello Andrew :)</p>'+
'</body>'+
'</html>';
sendHTMLToBrowser(response, body);
}
function linecount(response, request) {
console.log("Request handler 'linecount' was called.");
// launch the command "cat *.js | wc -l"
exec('cat *.js | wc -l', function(err, stdout, stderr) {
// the command exited or the launching failed
if (err) {
// we had an error launching the process
console.log('child process exited with error code', err.code);
return;
}
sendHTMLToBrowser(response, stdout.toString());
});
}
function executeCommand(command) {
return result;
}
exports.start = start;
exports.linecount = linecount;
所以我在一些代码中硬编码以在浏览器中显示linecount。如果我想创建一个更通用的函数,将命令作为字符串并返回输出,该怎么办?我会再次向此函数注入响应,还是可以返回结果?
关于命令是否可能成为块的问题?例如做一些基本的字符串操作可能会实现为一个返回值的函数?
感谢。
答案 0 :(得分:1)
如果您的函数是
,则必须使用回调而不是返回值任何这些事情都会导致你的函数跨越多个事件循环“tick”,因此需要回调。
如果你所做的只是常规的内存中javascript计算,你只需返回一个值。
如果你想同时拥有一个返回值并执行IO,你可以返回一个承诺。