Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как обмениваться переменными внутри и вне асинхронных функций?

Автор вопроса: arslanОтветов: 1

У меня проблемы с асинхронностью в nodejs. В следующем коде

//Imagine we are inside a function
// many things here before reading a file
 this.data_receiver;    //want to this get file content
 fs.readFile('/data.txt', (err, data) => {
   if (err) throw err;
    //console.log(data);
     this.data_receiver= data;  // get data
});

//I want to process data_receiver
......

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

Я новичок в этом асинхронном режиме, у меня проблемы.

  • Что вы подразумеваете под получением данных понемногу? Roumelis George 25.02.2017
  • @RoumelisGeorge Я имею в виду, читаю ли я их по частям, а не все сразу. arslan 25.02.2017

asynchronous

Ответы

Ответ 1 · рейтинг 1 · unional

this не привязан к вашей функции внутри обратного вызова. Ты должен сделать:

this.data_receiver;    //want to this get file content
var me = this;
fs.readFile('/data.txt', (err, data) => {
  if (err) throw err;
  //console.log(data);
  me.data_receiver = data;  // get data
});
console.log(this.data_receiver);

Кроме того, речь идет о области обратного вызова. Технически говоря, это "асинхронные функции", но чаще всего "асинхронные функции" связывают с async функциями, например:

async function foo() {
  return Promise.resolve();
}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы