allishappy
@allishappy

Почему не получается отправить запрос заново?

Использую node-feedparser. Код примерно такой:
const request = require('request'),
         feedParser = require('feedparser');
feedParser.on('readable', function() {
  var stream = this, item = stream.read();
  if (item) {
    //код для работы с данными
  }
});

this.feedParser.on('end', () => {
    console.log('end');
});      

const req = this.request(url), $this = this;
req.on('response', function(res) {
   req.pipe(feedParser);
});


Один запрос нормально отправляется. Но если после него я пытаюсь отправить ещё один, то в консоли вижу "Error: write after end". Где ошибка?
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
неужели так сложно почитать описание к модулю на npmjs.org?
const request = require('request');
const FeedParser = require('feedparser');

function readFeed(url) {
  return new Promise((resolve, reject) => {
    const $this = this;
    const feedParser = new FeedParser();
    const req = this.request(url);

    feedParser.on('readable', function() {
      var stream = this, item = stream.read();
      if (item) {
        //код для работы с данными
      }
    });

    this.feedParser.on('end', () => {
      resolve();
    });   

    feedParser.on('error', reject);

    req.on('response', function(res) {
      req.pipe(feedParser);
    });
    req.on('error', reject);
  });
}

readFeed('url').then(() => {
  console.log('end');
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы