Я извлек свою логику обработки данных c в отдельный файл javascript, но, поскольку он должен использовать http-сервер для выполнения своих запросов, мне пришлось каким-то образом передать его в качестве аргумента в этот файл, поэтому я преобразовал мои объекты getdata / setdata в классы с конструкторами:
class DataHandler {
constructor(httpRobot) {
DataHandler.prototype.httpRobot = httpRobot;
}
}
class GetData extends DataHandler {
constructor(httpRobot) {
super(httpRobot);
this.RData = null;
}
R() {
console.log('11' + super.httpRobot.get)
super.httpRobot.get('http://url', (resp) => {
console.log('hi i am requesting')
// do something with the data, but it never gets to this point!
});
}
}
module.exports = (httpRobot) => { return new GetData(httpRobot) }
И в моем файле приложения. js Вот как я пытаюсь его использовать:
var httpRobot = require('http')
const GetData = require('./scripts/DataHandler')(httpRobot)
GetData.R()
Пока хорошо, но он никогда не пытается выполнить запрос! Он вообще не попадает внутрь функции (resp) =>!
Но console.log ('11 '+ super.httpRobot.get) печатает объект http:
11function get(url, options, cb) { const req = request(url, options, cb); req.end(); return req;}
Так что он есть, но он никогда не попадает в console.log («привет, я запрашиваю»)
Это работало очень хорошо, когда оно было внутри файла приложения. js, но там это было просто базовая c структура объекта, такая как var GetData = {R: function () {... thecode ....}}; и он напрямую использовал объект httpRobot, поскольку они находились в одном и том же файле, но теперь он даже не пытался выполнить запрос, хотя я (по крайней мере, считаю) подтвердил, что объект http туда попал