Я использую ('child_process').exec;, выполнив команду bash, которая возвращает немного output, и я жду специального слова. Как я могу переписать свой пример с обещаниями?
const spawn = require('child_process').exec;
const doEcho = spawn('echo "hello world"');
doEcho.stdout.on('data', (data) => {
if (data.includes('world')) {
// run some other commands
}
});Почему вы хотите переписать его обещаниями?
@robertklep У меня есть цепочка команд, которую я хочу запустить. Я не хочу иметь обратный вызов ад, а также хочу создать новую базу данных (rethinkdb). И если запуск нового db не удастся, я хочу его поймать, и даже если он не работает, наша производительность - stdout или stderr. Или написание занимает больше времени, чем обычно. С обещаниями (async / await) мне легче с этим справиться.
Обещания представляют собой единственное (будущее) значение, тогда как doEcho.stdout - это непрерывный поток. Обещание будет иметь смысл здесь только в том случае, если условие data.includes('world') будет истинным (не более чем) один раз. Так ли это? Или нужно выполнить "какие-то другие команды" каждый раз условие истинно?
@robertklep да, мне нужно поймать его один раз, а затем запустить следующую команду
вы можете использовать этот npmjs.com/package/callback-promise





прочтите это до щелчка: developer.mozilla.org/docs/Web/JavaScript/Reference/…