Записать содержимое createWriteStream txt в глобальную переменную с помощью Node.js - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь загрузить файлы txt и mp3 и использовать их содержимое в другом модуле узла.

Как создать глобальную переменную с содержимым по трубопроводу из загруженного файла txt (и MP3 позжеstage) файл для использования вне функции FTP?

async function example() {
    var finalData = '';

    const client = new ftp.Client()
    client.ftp.verbose = true
    try {
    await client.access({
        host: "XXXX",
        user: "XXXX",
        password: "XXXX",
    })


    await client.upload(fs.createReadStream("README.txt"), myFileNameWithExtension)
    //let writeStream = fs.createWriteStream('/tmp/' + myFileNameWithExtension);
    //await client.download(writeStream, myFileNameWithExtension)

    finalData = await (() => {
        return new Promise((resolve, reject) => {

        writeStream
            .on('finish', () => {

            // Create a global variable to  be used outside of the FTP function scope to pipe the txt content into another node mogule

            })
            .on('error', (err) => {
            console.log(err);
            reject(err);
            })
        })
    })();
    }
    catch (err) {
    console.log(err)
    }
    client.close();
    return finalData;
}

1 Ответ

0 голосов
/ 19 февраля 2019

Нет, не создавайте глобальные переменные.Просто разрешите обещание с данными:

var finalData = await new Promise((resolve, reject) => {
    writeStream.on('finish', () => {
        resolve(); // pass a value
    }).on('error', (err) => {
        reject(err);
    });
});

finalData станет тем значением, которое вы передадите resolve(…) - я не знаю, какой результат вы хотите передать.В конце просто верните данные из вашей функции example (как вы уже делаете), чтобы вызывающая сторона могла использовать ее после ожидания возвращенного обещания.

...