Как проверить, должен ли я ждать, пока dom будет готов добавить или нет слушателя? - PullRequest
0 голосов
/ 13 февраля 2020

Я использую Электрон. У меня есть некоторый класс (модуль), где мне нужно послать некоторый сигнал к рендереру. В первый раз, когда я запускаю код, я использую сигнал dom-ready для запуска кода после загрузки рендерера, и он работает хорошо.

my_function: function() {
    var self = this;

    self.web_contents.on('dom-ready', () => {
        self.web_contents.send('my-signal', {'arg1': 'arg_value1' });
    });

Но, во второй раз, когда я запускаю свою функцию, dom и Рендерер уже загружен заранее, поэтому мне не нужно добавлять сюда слушателя, просто отправьте сигнал напрямую

my_function: function() {
    var self = this;

    self.web_contents.send('my-signal', {'arg1': 'arg_value1' });

    self.web_contents.on('dom-ready', () => {  // I would not need to do this the second time
        self.web_contents.send('my-signal', {'arg1': 'arg_value1' });
    });

Я хотел бы сделать что-то вроде этого:

my_function: function() {
    var self = this;

    if (is_the_dom_ready??) {
        self.web_contents.send('my-signal', {'arg1': 'arg_value1' });
    } else {
        self.web_contents.on('dom-ready', () => {
            self.web_contents.send('my-signal', {'arg1': 'arg_value1' });
        });
    }

Есть ли способ достичь этого? Или какой будет правильный способ сделать это?

Кроме того, возможный обходной путь может заключаться в добавлении флага и обновлении значения, когда dom готов в первый раз:

self.web_contents.on('dom-ready', () => {
    self.dom_ready = true
});
...