О видимости функции внутри другой функции, рекурсивный вызов
Скрипт решения капчи ВК.
Беда в первом вызове 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}`) } }) } |
Тему можно закрыть.
Кому интересно, исправил "function(err, answer)" на "(err, answer) => " Не знаю, почему три часа не догадывался об этом. |
Часовой пояс GMT +3, время: 02:37. |