Javascript 我有一个执行流问题,其中包含nodejs子进程
我想创建一个函数,该函数接收作为输入的字符串,并以字符串形式返回输出,但由于响应延迟,我无法创建该函数Javascript 我有一个执行流问题,其中包含nodejs子进程,javascript,node.js,child-process,Javascript,Node.js,Child Process,我想创建一个函数,该函数接收作为输入的字符串,并以字符串形式返回输出,但由于响应延迟,我无法创建该函数 var resultado = "old value"; function execShell(cmd) { exec("uname", (error, data, getter) => { if(error){ console.log("error",error.message); return;
var resultado = "old value";
function execShell(cmd) {
exec("uname", (error, data, getter) => {
if(error){
console.log("error",error.message);
return;
}
if(getter){
console.log("data",data);
return;
}
console.log(`need before exec: ${data}`);
resultado = data;
});
}
/* shell command for Linux */
execShell('uname');
console.log(`need after exec: ${resultado}`);
这里发生的是,回调不是从上到下执行的。这意味着
console.log(执行后需要:${resultado})
直接在execShell
之后调用,子进程尚未返回
您可以使用同步版本执行它:
const cp=require(“子进程”);
const result=cp.execSync(“uname”).toString();//.toString()用于将缓冲区转换为字符串
log(`result after exec${result}`);
这些文件是
如果您正在构建一个NPM包,那么您可以使用一个NPM包来帮助shell处理:它用一个更简单的API封装了许多子流程部件。您的答案是最简单的形式。或者,他需要学习异步上下文来运行异步任务。