Я использую NodeJs execFile () для запуска процесса демона. Я обернул обратный вызов обещанием использовать его асинхронно в других частях моего приложения.
Я понимаю, что обратные вызовы выдают ошибку / результат после завершения. Поэтому при сбое процесса-демона обещание корректно отклоняет ошибку.
Проблема: при правильном запуске процесса-демона обещание ничего не решает, так как обратный вызов еще не завершен,
Ответ получен после остановки процесса демона, поскольку это конец жизненного цикла обратного вызова. Но это слишком поздно.
Вопрос: Как отследить жизненный цикл обратного вызова, чтобы разрешить обещание (callback_in_progress)?
Нужно ли использоватьмодуль событий узла для создания прослушивателя событий?
Это 2 метода из модуля. Первый работает хорошо, но во втором у меня проблема.
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);
});
});
},
};