我正在使用 NodeJs execFile()来启动一个守护进程。我已经将回调包装在一个承诺中,以便在我的应用程序的其他部分异步使用它。
我了解回调在完成时会发出错误/结果。所以当守护进程失败时,promise 会正确拒绝错误。
问题:当守护进程正确启动时,promise 不会解决任何问题,因为回调尚未完成。
一旦守护进程停止,就会收到响应,因为那是回调生命周期的结束。但这为时已晚。
问题:如何跟踪回调的生命周期以让 Promise 解决(callback_in_progress)?
我需要使用节点事件模块来创建事件监听器吗?
这些是模块中的两种方法。第一个效果很好,但第二个是我遇到问题的地方。
const { execFile } = require('child_process');
const path = require('path');
const binaryPath = require('./BinaryPaths')
const mcUtil = path.join(binaryPath, 'multichain-util');
const mcd = path.join(binaryPath, 'multichaind');
module.exports = {
createChain: (chainName) => {
return new Promise((resolve, reject) => {
execFile(mcUtil, ['create', chainName], (err, res) => {
err ? reject(err) : resolve(res);
});
});
},
startMultichain: (chainName) => {
return new Promise((resolve, reject) => {
execFile(mcd, [chainName, 'daemon'], (err, res) => {
err ? reject(err.message) : resolve(res);
});
});
},
};