Передача HTTP-сервера в качестве аргумента методу класса - PullRequest
0 голосов
/ 28 апреля 2020

Я извлек свою логику обработки данных 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 туда попал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...