@MarEeeeee

Как адаптировать данную функцию в синхронный вариант?

У меня есть функция, которая нужна для получения всех доступных разделов на компьютере. Но она работает асинхроно, поэтому возникает ситуация, что я не могу получить и отправить данные из нее на свое веб приложение.

Как исправить эту проблему? возможно сущетсвуют альетнативные решания моей задачи ?

function ListDrives (){
    const list  = spawn('cmd');

    return new Promise((resolve, reject) => {
        list.stdout.on('data', function (data) {            
            const output =  String(data)
            const out = output.split("\r\n").map(e=>e.trim()).filter(e=>e!="")
            if (out[0]==="Name"){
                resolve(out.slice(1))
            }
            // console.log("stdoutput:", out)
        });

        list.stderr.on('data', function (data) {
            // console.log('stderr: ' + data);
        });

        list.on('exit', function (code) {
            console.log('child process exited with code ' + code);
            if (code !== 0){
                reject(code)
            }
        });

        list.stdin.write('wmic logicaldisk get name\n');
        list.stdin.end();
    })
}


серверная часть

<code lang="javascript">
router.post('/drives', (req, res) => {
    console.log("HEEEEEEEEEEEEEE", disks);
    res.send(JSON.stringify(disks));
 })


Часть на вебе
<code lang="javascript">
fetch('/drives', {
    method: 'POST', // *GET, POST, PUT, DELETE, etc.
    mode: 'cors', // no-cors, *cors, same-origin    
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
      },
    
    })
    .then(response => response.json()) 
    .then(json => this.directories = json)
</code>
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
monochromer
@monochromer
DIVeloper
ListDrives().then(data => {
  /* вот здесь и работайте с `data` */
  console.log("HEEEEEEEEEEEEEE", data);
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы