@DanKruit

Как правильно задать рекурсию для map в nodejs?

Есть вот такой код:
longPoll(callback) {
    let longPollMap = new Map();
	this.arg = 0;
    longPollMap.set('getLongPoll', () => {
      this.callMethod('messages.getLongPollServer', {}, (body) => {
        this.tempPoll     = JSON.parse(body)['response'];
        longPollMap.get('callLongPoll')();
      });
    });
    
    longPollMap.set('callLongPoll', () => {
		if(this.cap==false) {
		request({
        url: 'https://'+this.tempPoll['server'],
        qs: { 
          act:         'a_check',
          key:          this.tempPoll['key'].substr(0, (this.tempPoll['key'].length - 10)),
          ts:           this.tempPoll['ts'],
          wait:         25,
          mode:          2
        }
      }, (error, response, body) => {
		try { 
          body = JSON.parse(body);
          if('failed' in body)
            longPollMap.get('getLongPoll')();
          else {
		 this.tempPoll['ts'] = body['ts'];
	   }
           callback(body);
	   longPollMap.get('callLongPoll')();
        } catch(e) {
          console.log('LONGPOLL: '+e);
          longPollMap.get('getLongPoll')();
        }
      });
	  } else longPollMap.get('callLongPoll')();
	  
    });
  
    longPollMap.get('getLongPoll')();
  }

Как только cap становится true, должна происходить рекурсия до тех пор, пока не станет false (выполняет другая функция). Но беда в том, что возвращается ошибка RangeError: Maximum call stack size exceeded и приложение перезапускается. Как правильно сделать рекурсию?
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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