Перезапустите ту же функцию, когда дочерний процесс закрыт. - PullRequest
0 голосов
/ 28 января 2020

Я работаю с классом js и хочу, чтобы при закрытии child_process this.youtube функция MainFunction() перезапускалась снова;

Я знаю, что если вы находитесь внутри других функций, вы можете вызвать эту функцию с помощью this.MainFunction(), поэтому я попытался сделать то же самое, поместив ее в ту же функцию, но я получил ошибку this.MainFunction() is not a function

Вот мой код

const childprocess = require('child_process')
class Something {
    constructor(){

    }
    async MainFunction(){
        this.youtube=childprocess.spawn('C:/Program Files (x86)/Google/Chrome/Application/chrome.exe',["https://www.youtube.com/"]);
        this.youtube.on('close',function(){
            this.MainFunction()
        })
    }
}
module.exports = Something

1 Ответ

1 голос
/ 28 января 2020

Это из-за контекста, на который ссылается this внутри function. Если вы хотите, чтобы он ссылался на класс Something, измените функцию обратного вызова на функцию стрелки:

this.youtube.on('close',() => {
    this.MainFunction()
})

Подробнее о том, как работает this, можно найти в этом замечательном посте.

...