如何等待节点执行响应?
How to wait for node exec response?
我如何才能正确使用回调函数来从 condole.log()
函数中的 node exec 中获取结果?
import { exec } from 'child_process';
const check = () => {
exec(`...`, (err, stdout) => {
if (err) {
return false
}
else {
return true
}
})
}
console.log(check()) // getting undefined
我试过使用 .on('exit')
但 none 有效...很想在这里得到一些帮助。谢谢!!
您需要将调用包装在承诺中以获得回调的 return:
import { exec } from 'child_process'
const check = () => {
return new Promise((resolve) => {
exec(`...`, (err, stdout) => {
if (err) {
resolve(false)
}
else {
resolve(true)
}
})
})
}
通过不拒绝回调中的错误,您可以改为解析 promise 和 return false。如果您在 promise 调用中使用了 reject
参数,则需要通过链接 .catch()
调用来处理该错误。为了使实现与您已有的相似,我省略了它,而是用 false
.
解决了承诺
然后您可以在对 check
的调用中使用 .then()
并获得所需的结果:
check().then(res => {
console.log(res)
})
您可以使用 Promise 构造函数自己完成,也可以使用 util 模块将回调调用函数转换为 returns promise
使用 util 模块
const util = require("util");
const exec = util.promisify(require("child_process").exec);
const check = async () => {
const output = await exec(`echo hi`);
console.log(output);
};
check();
使用 Promise 构造函数包装
import { exec } from "child_process";
const check = async () => {
return new Promise((resolve, reject) => {
exec(`echo hi`, (err, stdout) => {
if (err) {
reject(err);
} else {
resolve(stdout);
}
});
});
};
我如何才能正确使用回调函数来从 condole.log()
函数中的 node exec 中获取结果?
import { exec } from 'child_process';
const check = () => {
exec(`...`, (err, stdout) => {
if (err) {
return false
}
else {
return true
}
})
}
console.log(check()) // getting undefined
我试过使用 .on('exit')
但 none 有效...很想在这里得到一些帮助。谢谢!!
您需要将调用包装在承诺中以获得回调的 return:
import { exec } from 'child_process'
const check = () => {
return new Promise((resolve) => {
exec(`...`, (err, stdout) => {
if (err) {
resolve(false)
}
else {
resolve(true)
}
})
})
}
通过不拒绝回调中的错误,您可以改为解析 promise 和 return false。如果您在 promise 调用中使用了 reject
参数,则需要通过链接 .catch()
调用来处理该错误。为了使实现与您已有的相似,我省略了它,而是用 false
.
然后您可以在对 check
的调用中使用 .then()
并获得所需的结果:
check().then(res => {
console.log(res)
})
您可以使用 Promise 构造函数自己完成,也可以使用 util 模块将回调调用函数转换为 returns promise
使用 util 模块
const util = require("util");
const exec = util.promisify(require("child_process").exec);
const check = async () => {
const output = await exec(`echo hi`);
console.log(output);
};
check();
使用 Promise 构造函数包装
import { exec } from "child_process";
const check = async () => {
return new Promise((resolve, reject) => {
exec(`echo hi`, (err, stdout) => {
if (err) {
reject(err);
} else {
resolve(stdout);
}
});
});
};