Во первых вы вызываете асинхронную версию
exec, есть ее синхронный собрат:
execsync
Во вторых, тут не обойдется без промисов / коллеков / Async/Await.
В текущей сборке, я бы рекомендовал использовать промисы, но сам я уже перешел на Async/Await c бабелем.
function enabledApi(conf) {
const config = {
host: conf.host,
username: conf.us,
password: conf.pa
};
return new Promise((resolve, reject) => {
exec(config, '/ip service set api disabled=no', (error, response) => {
const res = error ? 'error' : 'ok';
console.log(`res is ${res}`);
if (error) {
reject(error);
} else {
resolve(response);
}
});
});
}
const config = {
host:'1.1.1.1',
us:'user',
pa:'123'
};
enabledApi(config)
.then((res) => {
console.log(`ress again is ${res}`);
})
.catch((err) => {
console.error(`OMG! ${err.toString()}`);
});
Или все же с Async, но вам понадобится
babelfunction enabledApi(conf) {
const config = {
host: conf.host,
username: conf.us,
password: conf.pa
};
return new Promise((resolve, reject) => {
exec(config, '/ip service set api disabled=no', (error, response) => {
const res = error ? 'error' : 'ok';
console.log(`res is ${res}`);
if (error) {
reject(error);
} else {
resolve(response);
}
});
});
}
(async () => {
const config = {
host:'1.1.1.1',
us:'user',
pa:'123'
};
const res = await enabledApi(config);
console.log(res);
})()
.catch((err) => {
console.error(`OMG! ${err.toString()}`);
});