#typescript #google-chrome-extension
Вопрос:
У меня есть кнопка в моем всплывающее окно, чтобы остановить/запустить скрипт, он отлично работает, когда я иду, чтобы запустить его, но когда я иду, чтобы остановить его, вместо сценария мешает он просто выполняет новый фоновый процесс с appState = 0
и appState = 1
продолжает работать, есть ли способ сделать фон скрипт останавливает выполнение функции структура у меня есть прямо сейчас?
stopStart(): void {
if (this.currentUser.appState === 0){
this.globalsService.setCurrentUserState(1);
this.activate();
}
else {
this.globalsService.setCurrentUserState(0);
this.activate();
}
}
activate(): void {
chrome.runtime.sendMessage({
appState: this.globalsService.getCurrentUserState(),
iterations: 5
}, (response) => {
// TODO
}
});
}
фон
chrome.runtime.onMessage.addListener(
async (request, sender, sendResponse) => {
const actionOne = async () => {
await actionTwo((value) => {
const data = value;
const result = actionThree(value);
};
let cont = 0;
while (request.iterations > cont){
console.log('State:', request.appState);
// If user disables script break loop immediately
if (request.state === 0){
return true;
}
await actionOne();
cont ;
}
/* Finish */
console.log('Finished');
return true;
}
);
Комментарии:
1. Извлеките код из onMessage в глобальную функцию и добавьте глобальную переменную like
shouldStop
, которая будет проверяться внутриwhile
цикла (также вложенные функции) и назначаться в onMessage в зависимости отrequest
.