Как вызвать глобальную или внешнюю функцию в дочернюю функцию? - PullRequest
0 голосов
/ 29 мая 2019

Я использую приведенный ниже код, и когда я вызываю функцию onMessageRender(), поэтому она говорит "this is not a function"

request = new Atmosphere.AtmosphereRequest ();// Глобальная функция

Вызов нижеприведенного кода в ngONinIt

this.createSSE ();

//Main function 
 createSSE(){ this.request.onMessage = function (response) {
        console.log('request.onMessage trigger');
         try {
           let jsonData = JSON.parse(message);
          console.log('Normal Message JSON this.request.util', jsonData);  
          this.onMessageRender();    
        }catch (e) {
           console.log('Error in websocket onmessage: ', e);
           return;
         } }

Создана ниже функция глобально

onMessageRender(){

}

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Я хотел бы ответить на мой собственный вопрос, потому что после большого боя.Я получил свое рабочее решение.

Мне нужно преобразовать функцию нормального / старого стиля в функцию Fat Arrow, потому что Функция Arrow всегда имеет ссылку this и доступна для этого объекта класса.

Старый (не работает)

this.request.onMessage = функция (ответ) {...}

Новый (рабочий)

this.request.onMessage = (response) => {...}

После вышеуказанных изменений теперь он принимает все остальные функции в нем.

Спасибо всем за ваше время и поддержку!

0 голосов
/ 29 мая 2019

Предполагая, что это вопрос Angular или машинописного текста,

, если createSSE объявлен как часть углового модуля, и если onMessageRender() - глобальная функция, которая не объявлена ​​как часть углового модулявызов onMessageRender() должен выполняться без this, поскольку onMessageRender() может не являться частью того же объекта, который объявлен createSSE.

Если onMessageRender() действительно является частью того же объекта, ядумаю, что для ответа на ваш вопрос требуется больше деталей.

...