Есть ли способ остановить автоматически запущенный скрипт в середине выполнения? - PullRequest
0 голосов
/ 11 февраля 2019

Для начала я плотник, а не разработчик.

Я использую формы Google, чтобы автоматизировать мои оценки работы.У меня есть скрипт, который форматирует ответы в формате pdf, чтобы их можно было отправить моему основному клиенту на утверждение.MasterFunction () запускается отправкой формы.Сценарий, который я написал, возможно, не является правильным способом сделать это, но он выглядит следующим образом:

function masterFunction() {
    aFunction();
    bFunction();
    cFunction();
    ...
};

function a(){
   ...
};

function b(){
   ... 
};       
...

Если сценарий обнаруживает ошибку в любой из дочерних функций, я хотел бы сохранить работу дозатем в другом файле и очистите, чтобы можно было запустить следующий ответ формы.После этого я могу вернуться и исправить проблемы и запустить оставшуюся часть сценария.

У меня уже есть места в коде, чтобы перехватить эти ошибки, такие как пустое поле, или нулевое значение, или что-то, что я не правильно ввел в форму (но не ошибки скрипта, я необеспокоен этим), который отправляет мне оповещение по электронной почте об этих проблемах, но кто-то другой может отправить эти PDF-файлы клиенту и не увидеть проблему.

Есть ли способ сделать это, который останавливает masterFunction (),Почти все, что я обнаружил, остановит дочернюю функцию, такую ​​как break или try, но это только отправит ее обратно в ведущую функцию, которая продолжит работу, отправит ее следующей функции и выполнит до конца.

1 Ответ

0 голосов
/ 11 февраля 2019

Одним из вариантов является использование оператора return, который позволяет вам возвращать значение из ваших функций.Когда вы вызываете return, функция немедленно завершается и, необязательно, передает значение обратно родителю, который вы можете проверить.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

Измените ваши дочерние функции, чтобы использовать оператор returnи вернуть «истинное» значение в случае успеха и «ложное» в случае ошибки, а затем проверить результаты каждого:

в функции:

return false;

в мастере:

var a_result = aFunction();
if(!a_result){
    /*... optionally do "failed" tasks here ..*/
    return  //exit master function
}

Другим вариантом является «выбросить» исключение, которое затем можно «перехватить» в главной функции.Вызов исключения может работать лучше, если вам все равно, какая из ваших дочерних функций не сработала.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw

На дочернем:

throw "missing name!"

На главном:

   function masterFunction(){
    try{
       aFunction();
       bFunction();
       ...
    }catch(e){
        logger.log('Caught error '+e);
    }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...