WedX - журнал о программировании и компьютерных науках

Проблема с последовательными вызовами асинхронной проблемы с одной вспомогательной функцией?

С вспомогательной функцией перевода Google у меня возникают проблемы при последовательном вызове функции onSubmit. Помощник отлично работает, если вызывается только один раз во время выполнения основной функции.

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

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

[ОБНОВЛЕНИЕ] Хочу добавить, что в журнале выполнения показаны два последовательных вызова — никаких признаков совпадения. Кроме того, настройки языка во втором вызове перевода выполняются правильно. Проблема, по-видимому, заключается именно в LanguageApp.translate(val,'en', langID). Несмотря на то, что langID для второго перевода задан правильно, функция перевода использует langID, заданный вызовом previous.

Похоже, это может быть проблема с асинхронной функцией, но я не знаю, как это сделать в сценариях приложений. Этот пост предполагает (я думаю), что может возникнуть системная проблема с использованием async: Running асинхронные функции в скрипте Google Apps

Ниже показано, как я вызываю вспомогательную функцию перевода в моей основной функции onFormSubmit. Будут ли два вызова выполняться одновременно без асинхронной или какой-либо другой паузы? (Обратите также внимание, что когда вспомогательная функция создает новую отправку формы с переводами, основная функция onFormSubmit снова автоматически запускается. Таким образом, параллельно будет запущен еще один экземпляр основной функции.)

Как я должен вызывать помощника перевода в этой последовательной ситуации? Спасибо большое.

 // Check sheet value & create the default (Spanish) version if not already existing ///// 
if(!listTranslations.toString().toLowerCase().includes("spanish")){
  var translateStatus = translateService("spanish",pageUID);   // call translation helper function
   // Logger.log(`Spanish add: %s`,translateStatus)
    if(translateStatus="Translation Completed"){
      listTranslations=listTranslations + "Spanish,";  // add to the list of translations
      sheet.getRange(currentRow,saveTranslationCol).setValue(listTranslations);
    }
  }

// If requested new translation already exists, newLang set to "" earlier in script ////
   if(newLang.toString().length > 0){
  var translateStatus = translateService(newLang,pageUID);   // call translation helper function
   // Logger.log(`%s add: %s`,newLang,translateStatus);
    if(translateStatus="Translation Completed"){
      listTranslations=listTranslations + newLang + ","; // add newLang to the list of translations
      sheet.getRange(currentRow,saveTranslationCol).setValue(listTranslations);
    };
  }

  • Просто чтобы быть уверенным, под последовательным вы подразумеваете один сразу после другого? Сценарий приложений почти полностью синхронен, хотя есть способы сделать его асинхронным. Несколько вопросов. Вы говорите, что оба перевода происходят, но аргументы почему-то путаются, где устанавливается arg newLang? Можете ли вы поделиться кодом вашей вспомогательной функции translateService? Не похоже, что это как-то связано с асинхронностью, но я не видел остальной части вашего кода или вашей вспомогательной функции, поэтому не могу сказать наверняка. 11.01.2021

Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]