Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.08.2016, 20:11
Новичок на форуме
Отправить личное сообщение для DanK Посмотреть профиль Найти все сообщения от DanK
 
Регистрация: 24.08.2016
Сообщений: 2

О видимости функции внутри другой функции, рекурсивный вызов
Скрипт решения капчи ВК.
Беда в первом вызове this.callMethod(name, options, callback); внутри неё же. Я понимаю, что проблема в её вызове из другой функции, но как это всё-таки сделать?
Без "this." тоже не работает

Ошибка, с которой отваливается: this.callMethod(name, options, callback);
TypeError: Cannot read property 'callMethod' of undefined


callMethod(name, options, callback) {
    if(options['access_token'] !== false)
      options['access_token'] = this.token;
    if(name != 'messages.getLongPollServer')
      options['v']            = this.botVer;

    request({
      url: this.apiUrl + name,
      method: 'POST',
      formData: options,
      timeout: 20000
    }, (error, response, body) => {
      try {
        if (!error && response.statusCode === 200) {
		  let temp = JSON.parse(body);
		  if(temp.error!=undefined) {
          if(temp.error['error_code']==14) {
			console.log('ANTIGATE: '+temp.error['captcha_img']);
			solver.solve(temp.error['captcha_img'], function(err, answer){
			if (err)
				console.log('ANTIGATE ERROR: '+err);
			else
				{
					options['captcha_sid'] = temp.error['captcha_sid'];
					options['captcha_key'] = answer;
					console.log('ANTIGATE ANSWER: '+answer); 
					this.callMethod(name, options, callback);
				}
			});
			}
		  }		
		  else
			  callback(body);
        } else {
          logger.error(`[callMethod] ${name} ${error} ${response}`);
          if(body === undefined) this.callMethod(name, options, callback);
        }
      } catch(e) { logger.error(`[callMethod] ${e}`) }
    })
  }
Ответить с цитированием
  #2 (permalink)  
Старый 24.08.2016, 20:32
Новичок на форуме
Отправить личное сообщение для DanK Посмотреть профиль Найти все сообщения от DanK
 
Регистрация: 24.08.2016
Сообщений: 2

Тему можно закрыть.

Кому интересно, исправил "function(err, answer)" на "(err, answer) => "
Не знаю, почему три часа не догадывался об этом.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать количество вызовов функции внутри функции lohmatiy Javascript под браузер 4 24.02.2014 17:45
Остановить функцию внутри другой функции sliv Общие вопросы Javascript 5 07.10.2012 18:07
Проверить данные в функции, которая работает с другой функцией. Andrej_2 Общие вопросы Javascript 5 27.09.2012 22:42
Передача функции другой функции ntro123 jQuery 3 20.02.2011 12:15
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33