Что значит интерпретировать — Значения слов
Толковый словарь русского языка. Д.Н. Ушаков
интерпретировать(тэ), интерпретирую, интерпретируешь, сов. и несов. что (книжн.). Произвести (производить) интерпретацию чего-н.
Толковый словарь русского языка. С.И.Ожегов, Н.Ю.Шведова.
интерпретировать[тпэ], -рую, -руешь; -анный; сов. и несов; что (книжн.). Истолковать (-вывать), раскрыть (-ывать) смысл, содержание чего-н.
сущ. интерпретация, -и, ж.
Новый толково-словообразовательный словарь русского языка, Т. Ф. Ефремова.
интерпретироватьнесов. и сов. перех.
Разъяснять смысл чего-л.
Осуществлять интерпретацию (2).
Примеры употребления слова интерпретировать в литературе.
Бесспорно одно: сей инцидент — если интерпретировать его именно таким образом — роняет неблаговидную тень на безгрешное чело Сына Человеческого.
Джордж ездил с Зини в Бхопал и теперь принялся шумно обсуждать катастрофу, интерпретируя ее идеологически.
Женщина, наделенная редчайшим свойством ведовства, либо просто боится, либо интерпретирует свое умение в традиционных рамках сверхъестественного и начинает эксплуатировать уникальный дар тоже вполне традиционным образом.
Идея, подсказанная Дюкло, показалась всем такой приятной, что каждый интерпретировал ее по-своему.
Правда, многие вещи раби Нахман интерпретирует по-своему либо добавляет свое видение к устоявшемуся, однако и это — лишь новая струя в потоке многовековой еврейской мысли, особенно в ее кабалистическом и хасидском руслах.
Понятие значения, на наш взгляд, превосходит, достоинством и силом понятием множества таким образом, что конструктивная теория множеств, предполагающая те множества, которые имеют референтативный характер, являются, следовательно, семантическими категориями, значением и характеристиками использования констант в системах исчислений, смыслом тем самым подстановочной интерпретации квантификации, подстановочных констант на места переменных, переводит константы одной формализованной системы в переменные другой, причем такой перевод есть перевод языковой, интерпретируемый в системе паранепротиворечивых логик, что и предполагает образование понятия морфизма.
Конструктивная теория множеств является тем самым общей теорией квантификации, теорией смыслообразования, а не самого смысла, интерпретацией формализма смысла, поскольку она сама интерпретирует себя, лишенная отношений присущности между множествами.
Член послевоенного Общества Листа в Берлине и товарищ Тарнхари, Кирхгоф, занимался генеалогией и интерпретировал различные легенды как отражения действительных исторических событий.
Логично ожидать, что компьютеризация привлечет повышенный интерес социологов-теоретиков и будет интерпретирована в моделях трансформации современного общества как ключевая тенденция.
Наконец, нельзя упускать из виду возможности интерпретировать упомянутое физиологическое отправление товарища Константинова как действие, связанное с его способом молниеносного передвижения в пространстве.
Историк интерпретирует перемену обстановки, вызванную в Беломорье буйным кораблестроительством Петра и пробуждающую народ израильский, пардон, — российский, к хождению по водам, волшебному лову рыбы, отвлечению от пагубного превращения воды в вино.
Иначе говоря, интерпретируемый формализм есть морфизм, и поскольку, как уже было выяснено в теории логического объекта, формализм подлинен, если является морфизмом, морфизм — критериум и выражение его существования, практики, то формализм необходимо интерпретирует себя сам.
В связи с вышеизложенным знаменитый древнебританский кромлех Стоунхенджа также можно интерпретировать с точки зрения его эротико-оргиастических функций.
Этот сюжет, как, скажем, история Саломеи, соблазнял уже не одного писателя и до Лагерквиста, но Лагерквист интерпретирует его по-своему.
Так что, как видите, еще задолго до того, как Липшиц и мадам Давидович, спиритически интерпретируя желание бедного покойного Синсхаймера, сняли меня с роли призрака и назначили могильщиком, кое-какое практическое знакомство с кладбищами у меня уже имелось.
Источник: библиотека Максима Мошкова
Как выбрать уровень статистической значимости для AB-теста и как интерпретировать результат / Хабр
Также опубликовано в отдельном блоге автора.
AB-тесты сейчас применяет, возможно, каждый второй менеджер продукта, однако далеко не всегда ясно, как же интерпретировать результат теста и какой уровень статистической значимости использовать. Используем слишком высокий — тесты возможных улучшений будут проваливаться, хотя улучшения на самом деле есть. Используем слишком низкий — часто будем получать «подтверждения» ложных улучшений.
Независимо от выбранного уровня значимости, принимая решения по результатам AB-тестов, время от времени мы будем ошибаться и наносить ущерб бизнесу. Выбирая уровень статистической значимости тестов (или что то же самое — граничные p-value), мы можем ограничить количество ошибок и балансировать между пользой от оправданно успешных экспериментов и ущербом от ошибочно успешных.
Регистрация по номеру телефона
Представьте себе, что вы — менеджер продукта в корпорации, занимающейся веб-сервисами.
Вы работаете над повышением количества регистраций, внимательно рассматриваете этапы прихода новых пользователей, замечаете, что многие отваливаются на этапе ввода своего email и решаете попробовать заменить email на номер телефона. Пусть это не совсем общепринято и требует отправки небесплатной смски, но сегодняшние пользователи не очень любят электронную почту и часто регистрируются прямо с телефона.
Что же, это — вполне традиционная задача менеджера продукта. Мы — современная компания и до принятия больших решений, тем более требующих небесплатных смсок, стараемся проверять: улучшают ли ситуацию наши идеи на самом деле. Соответственно конструируем два варианта регистрации: старый — с email’ом и новый — с номером телефона. Показываем каждый вариант случайно выбранным пяти процентам анонимных посетителей сайта, затем измеряем какая доля посетителей успешно ввела email/телефон и активировала эккаунт в течение, скажем, суток с момента регистрации.
Планирование эксперимента
Допустим, мы спланировали эксперимент с любым из обычных калькуляторов оценки требуемого количества пользователей, всё сделали аккуратно, выбрали одностороннюю гипотезу (нас интересуют только улучшения) и.. какой же уровень статистической значимости выбрать?
Довольно часто в компаниях есть «обычный» уровень значимости, который выбирают просто потому, что так принято, — допустим, 95%. Однако не подойдёт ли в данном случае уровень значимости 90% или даже 80%? Ведь не хотелось бы отказаться от полезного улучшения, только потому что мы, мол, не абсолютно уверены в улучшении — на все сто ведь никогда нельзя быть уверенным.
Что результаты значат на самом деле
Допустим, мы выбрали 90%-тную значимость, опасаясь, что при большей тест может провалиться, а меньшую вроде бы никто вокруг нас не применяет. Запустили тест, он работал ровно пять полных недель (полных — чтобы сгладить возможное отличие поведения пользователей в будни и на выходных), каждый вариант увидело примерно 10000 человек, тест завершился успешно, калькулятор сообщил что-то вроде «p-value is 0.07, You can be 90% confident that this result is a consequence of the changes you made». Что же на самом деле это означает?
Один из простых способов интерпретировать AB-тест — идти от обратного. На самом деле мы ведь никогда не можем быть полностью уверенными, что предложение вводить телефонный номер в среднем приносит больше регистраций. Всегда есть вероятность, что на длительном периоде времени телефонные регистрации приносят столько же пользователей, сколько email-регистрации или даже меньше, но вот именно на тех неделях, когда мы проводили тест, случайная флуктуация принесла больше телефонных регистраций, чем емейл-регистраций.
Если телефонные регистрации ничуть не лучше, в некоторых тестах они всё равно будут случайно выигрывать.
P-value AB-теста как раз и показывает, насколько редкое событие мы наблюдаем, если бы предложение вводить номер телефона на самом деле (на длительном периоде времени) ничего не улучшало, а возможно даже и ухудшало.
Представьте себе, что в такой печальной ситуации мы провели бы не один, а сотню одинаковых AB-тестов: каждый по те же пять недель, каждый по 10000 посетителей на вариант. В большинстве таких ста тестов телефонный вариант принесёт меньше регистраций, чем email-вариант или столько же, как и email-вариант. Однако в части тестов телефонный вариант может принести немного больше регистраций.
Наблюдаемое p-value 0.07 как раз и означает, что если телефонный вариант на самом деле ничуть не лучше email’ового, то оказаться впереди email’ового столь сильно или ещё сильнее, чем мы наблюдаем, он смог бы в семи тестах из ста.
Выбор уровня статистической значимости показывает, насколько редкой должна быть наблюдаемая разница в конверсиях между телефонным и email’овым вариантами, чтобы мы всё же признали такую разницу слабо объяснимой случайной флуктуацией и решили переключиться на телефонные номера.
Стоимость ошибочного выигрыша
Ключевой момент интерпретации состоит в том, что даже если мы всё проводим аккуратно, без технических и логических ошибок, то наши AB-тесты всё равно время от времени обязательно будут «подтверждать» ложные гипотезы. Если мы будем принимать решения на основании тестов, то периодически будем ошибаться. Мы лишь можем ограничить количество ошибок, выбирая тот или иной уровень статистической значимости.
Если ошибиться очень опасно (без регистрации пользователей мы ничего не продадим!) — выбираем высокий уровень значимости. Однако высокий уровень значимости не придёт бесплатно: придётся очень значительно увеличивать длительность тестов, либо уверенно выигрывать смогут лишь варианты, дающие очень значительный прирост. В результате будем либо упускать небольшие возможности улучшения, либо будем успевать проводить очень мало экспериментов.
В общем-то пользу от теста и стоимость возможных ошибок при том или ином уровне значимости можно прикинуть с помощью очень простых расчётов. В примере ниже мы подсчитываем результат в новых пользователях, но не намного более сложным образом можно оценивать ожидаемые результаты и в деньгах.
Пользуясь нашими знаниями предметной области и историей предыдущих улучшений предположим, что удачный переход на телефонные регистрации повысит конверсию процентов на 5, а если мы ошибочно перейдём на телефонные регистрации, то возможно и половина посетителей не сможет или не захочет регистрироваться (откуда именно берём такие допущения расскажем ниже).
Среднее количество регистраций в неделю | 2000 |
Насколько больше пользователей может приносить телефонная регистрация по сравнению с емейловой | 5% |
Насколько меньше пользователей может приносить телефонная-регистрация в случае ошибки | 50% |
Если всё отлично, то год работы с смс-регистрацией принесёт дополнительно пользователей | 52 * 2000 * 5% = 5200 |
Если ошибочно внедрили смс-регистрации, то за год недосчитаемся пользователей | 52 * 2000 * 50% = 52000 |
Выбранный граничный уровень значимоcти | 95% |
Если бы не проводили никаких улучшений, то за год появилось бы пользователей | 52 * 2000 = 104000 |
Если бы проводили подобные эксперименты постоянно и принимали решения с таким же уровнем значимости, то за год средний эксперимент мог бы принести дополнительно пользователей | 95% * 5200 — (100%-95%) * 52000 = 2340 |
Пользы от среднего подобного эксперимента в процентах роста аудитории | = 2340 / 104000 = 2. 25% |
Эту табличку можно найти в Google Sheets и скопировать себе.
Выбор уровня статистической значимости
Откуда же до начала эксперимента подставлять в такую таблицу ожидаемую пользу от справедливо выигравшего теста (5% в нашем примере) и возможный вред в случае ошибки (50% в нашем примере)? Лучше всего, конечно, опираться на историю подобных изменений. Если это далеко не первый эксперимент с улучшением воронки регистраций, и большинство из предыдущих увеличивало конверсию на пару процентов, то вряд ли даже очень значительная идея улучшит сильнее, чем на 5-10%.
Если истории подобных внедрений нет или она незначительна, то я не знаю метода лучше, чем экспертные оценки и страхи. Всё же вряд ли аж половина потенциальных пользователей не регистрируется, потому что не хотят / не могут вводить email, а телефон с радостью ввели бы. В лучшем случае миграция на номер телефона подтянет долю регистрирующихся с 7.7% может быть до 8% (улучшение на 5%). А вот если мы ошибаемся и пользователи на самом деле вообще не хотят доверять нам номер телефона, то можно/страшно потерять и половину регистраций.
Числа в таблице подобраны таким образом, что при 90%-тной значимости эксперимент не имеет смысла — мы слишком часто будем ошибаться проводя подобные эксперименты раз за разом. При 95%-тной значимости же, кажется, что средний подобный эксперимент может принести пользу, но не очень большую — всего-то пару процентов дополнительных пользователей за год после внедрения улучшения. Стоит ли в таком случае вообще проверять идею телефонных регистраций экспериментом или лучше принять решение основываясь на интуиции начальства, или просто сделать так, как поступают наши конкуренты?
Не уверены — проверяем строже
Что же, если вся предыдущая команда сервиса была уволена вчера, мы очень мало знаем, о рынке и потенциальных пользователях, то действительно, наши идеи могут иметь мало смысла и неплохо бы проверять идеи улучшений построже.
Например, давайте подставим в таблицу невероятно высокие страхи: 99% потери регистраций в случае ошибки (в нашей стране неожиданно входящие СМС оказались платными, и вообще никто не хочет регистрироваться по смс), а возможный положительный эффект оцениваем всего лишь в 2-3%. Даже в столь печальной ситуации, когда мы не уверены ни в рынке, ни в своих идеях, стоит нам выкрутить статистическую значимость на 99% — и волна подобных экспериментов всё же принесёт заметную пользу. Эксперименты станут занимать невероятно много времени, но если в воображаемом мире оно у нас есть — неработающие идеи будут внедряться крайне редко.
Небольшое улучшение, повторённое много раз, — большое улучшение
Дополнительные пара процента пользователей в год — не очень много, если только у вас уже не миллионы пользователей. Однако два десятка подобных скромных экспериментов проведённых один за другим уже принесут почти 50% дополнительных пользователей (20 повторений 2. 20 ≈ 1.56 ).
Культура постоянных небольших экспериментов к сожалению может отвлекать от придумывания действительно прорывных идей, но может принести очень немаленькую пользу, оптимизируя существующие решения.
Можно наблюдать и после принятия решений
Было бы здорово даже в случае выигравшего эксперимента понаблюдать за пользователями более долговременно. Например, если по результатам наших пяти недель регистрация по номеру телефона выиграла, мы можем включить её для 95% анонимных посетителей. Оставшимся пяти процентам можно предлагать по прежнему email и сравнить результаты различных вариантов не через пять, а через 25 недель.
Если применять подобный подход пост-внедренческих тестов постоянно, то можно учесть его и в прикидочной таблице — вполне можно ограничить негативный эффект ошибочного внедрения, например, четырьмя месяцами, если эти четыре месяца после внедрения проверять, нет ли не всё же негативного эффекта от внедрения. Это позволит проводить эксперименты с ещё более низким уровнем значимости (а значит — мы сможем проводить их чаще) ценой головной боли с наличием ещё большего количества вариантов сайта, работающих одновременно, и сложности с публичными анонсами внедрений (у некоторых пользователей старое решение может показываться ещё четыре месяца).
Проверяйте идеи, имеющие смысл
К счастью или к сожалению, но статистические исследования не избавляют от необходимости думать. Понимание рынка и его стандартов, пользователей и истории сервиса позволяет формулировать гипотезы, имеющие больший шанс улучшить ситуацию.
Если вы занимаетесь сервисом не первый год и знаете, что им пользуются для заказа рабочих инструментов, то вряд ли даже очень неудобная регистрация оттолкнёт больше нескольких процентов пользователей — инструменты ведь заказывать таки надо. Соответственно в прикидочной таблице страх потери можно ограничить, скажем, в 20% и внезапно окажется, что нам достаточно уровня значимости в 85% или даже в 80%, что радикально сократит затраты времени требуемого для эксперимента.
Если вы знаете, что по результатам прошлых лет даже самые радикальные изменения не улучшают/ухудшают ситуацию больше, чем на несколько процентов (например, новые пользователи приходят в основном по сильной социальной рекомендации), то и в оценочную таблицу можно вписывать подобные цифры. Например, возможную пользу оценим в 2%, а возможный вред — в 5%. В результате снова окажется, что достаточно и 80% уровня значимости и эксперимент можно провести очень быстро.
Если вы опасаетесь, что вот именно данная идея несёт в себе очень большой риск (действительно почти все потенциальные пользователи откажутся давать свой номер телефона), то может быть стоит придумать менее рискованный эксперимент, позволяющий проверить гипотезу о желаниях пользователей способом менее разрушительным в случае ошибки? Например, почему бы не попробовать принимать и телефон, и емейл — это резко уменьшит потенциальный негативный эффект (уйдут только те, кто не разберётся, чего же от них хотят), а окончательно отказаться или не отказаться от email можно будет по результатам долговременного анализа — просто посмотрев на то, что пользователи предпочитают использовать.
Некоторые изменения имеет смысл проводить, даже если мы не можем подтвердить положительный эффект
Если стратегия компании — перевод всех-всех-всех сервисов на идентификацию клиентов по номеру телефона или, что чаще встречается, — перевод на новые корпоративные цвета и стили, то нужно иметь очень серьёзные аргументы, чтобы отказаться от внедрения. Если калькулятор длины эксперимента показывает безумные числа необходимой длительности для надёжного опровержения отрицательного или нулевого эффекта изменений, попробуйте спланировать эксперимент, подтверждающий, что изменение, если даже и ухудшает ситуацию, то не более чем на пару процентов. Например, вот этот калькулятор позволяет такое.
Как же подходить к выбору уровня значимости и анализу результатов?
Конечно же интерпретируйте результаты завершившихся тестов с помощью калькулятора, который правильно формулирует результаты. Например, с помощью productab.com, сделанным вашим покорным слугой
Впрочем, именно математика у всех хороших калькуляторов практически одинакова: корректно посчитают и такой, и такой (платный), и такой калькуляторы — просто помните, как правильно интерпретировать результаты
Прикиньте стоимость ошибок экспериментов разного рода именно для вашего сервиса и выберите несколько стандартных или не очень стандартных правил. Например, вида:
«Эксперименты с возможной потерей клиентов тестируем с уровнем значимости 95%»
«Просто обычные небольшие улучшения тестируем с уровнем значимости 90%»
«Мелочи, вроде текстов и цветов в местах не касающихся оплаты товара, тестируем c 80%-тной значимостью и если калькулятор рекомендует длину эксперимента больше недели, то пропускаем тестирование совсем»
Ну и конечно, набирайте больше опыта, узнавайте пользователей лучше, чтобы инвестировать в эксперименты, которые на самом деле могут что-то улучшить. Возможно в эксперименты, меняющие весь процесс использования сервиса радикально. Например, что если в нашем воображаемом сервисе вообще отказаться от регистрации и принимать оплату от любого незарегистрированного посетителя, у которого есть банковская карта?
Благодарности
Эта статья увидела свет также и благодаря неравнодушным людям, любезно согласившихся прочесть и прокомментировать черновик, — благодаря Светлане Марченко и Михаилу Марченко, Максиму Стаценко и Даше Стаценко, Саше Лыскову.
А как вы интерпретируете результаты AB-теста?
Насколько масштабный у вас продукт, как вы проводите тесты и выбираете уровень статистической значимости? Автор будет очень благодарен за советы по более понятной интерпретации результатов теста.
Главная — Интерпретация
Главная — Интерпретация перейти к содержаниюПоиск
Опыт глубоких исследований по
дополнительным категориям
Interpret организован вокруг шести взаимосвязанных практических областей, причем идеи в одной часто отражают и влияют на идеи в другой.
Наши офисы
Шанхай Сеул Мюнхен Лондон Даллас Сиэтл Сан-Франциско Лос-Анджелес- Лос-Анджелес
- Сан-Франциско
- Сиэтл
- Лондон
- Шанхай
- Сеул
Адрес
600 Corporate Pointe
Suite 1050
Culver City, CA
[электронная почта защищена]
[электронная почта защищена]
310. 981.4 750
Подпишитесь на нашу рассылку
Interpret — глобальное агентство по изучению потребительского поведения.
Мы помогаем компаниям, работающим на стыке медиа, технологий и развлечений, ориентироваться в будущем.
Компания
- Что мы делаем
- Продукты
- Экспертиза
- Карьера
- Связаться с нами
Подписывайтесь на нас
Фейсбук Твиттер Линкедин
Продукты
- Мера новых медиа
- Новые медиа-показатели: глобальные профили
- Матрица умного дома
- GameByte
- ВидеоСмотреть
Экспертиза
- Игры
- Цифровые развлечения
- Интернет вещей и умный дом
- Киберспорт
- Мобильный и CE
- Реклама
Ресурсы
- Блог
- Нажимать
- События
© ООО «Интерпрет». 2022. Все права защищены
Машины для устного перевода | XState Docs
Ознакомьтесь с нашими новыми документами!
🆕 Узнайте больше об интерпретации машин с помощью XState (opens new window) в нашей новой документации.
Хотя конечный автомат/диаграмма состояний с чистой функцией .transition()
полезен для гибкости, чистоты и тестируемости, для того, чтобы его можно было использовать в реальном приложении, необходимо что-то:
- Отслеживание текущего состояния и его сохранение
- Выполнение побочных эффектов
- Обработка отложенных переходов и событий
- Связь с внешними службами
Интерпретатор отвечает за интерпретация конечного автомата/диаграммы состояний и делать все вышеперечисленное, то есть анализировать и выполнять его в среде выполнения. Интерпретируемый работающий экземпляр диаграммы состояний называется службой .
Интерпретатор 4.
0+Предоставляется дополнительный интерпретатор, который можно использовать для запуска диаграмм состояний.
Отправка событий
События отправляются в запущенную службу путем вызова service.send(event)
. Существует 3 способа отправки события:
- Как объект события (например,
.send({ type: 'CLICK', x: 40, y: 21 })
)- Объект события должен иметь свойство
type: ...
string.
- Объект события должен иметь свойство
- В виде строки (например,
.send('CLICK')
, которая преобразуется в отправку{ type: 'CLICK' }
- Строка представляет тип события.
- В виде строки, за которой следует полезная нагрузка объекта (например,
.send('CLICK', { x: 40, y: 21 })
) 4.5+- Первый строковый аргумент представляет тип события.
- Второй аргумент должен быть объектом без свойства типа
: ...
.
ПРЕДУПРЕЖДЕНИЕ
Если служба не инициализирована (то есть если service.start()
еще не вызывалась), события будут отложены до запуска службы. Это означает, что события не будут обрабатываться до
, после чего все они будут последовательно обработаны.
Это поведение можно изменить, установив { deferEvents: false }
в параметрах службы. Когда deferEvents
равно false
, отправка события в неинициализированный сервис вызовет ошибку.
Пакетные события
Несколько событий можно отправить в виде группы или «пакета» в работающую службу, вызвав service.send(events)
с массивом событий:
Это немедленно запланирует последовательную обработку всех пакетных событий. Поскольку каждое событие вызывает переход состояния, который может иметь действия для выполнения, действия в промежуточных состояниях откладываются до тех пор, пока не будут обработаны все события, а затем они выполняются в состоянии, в котором они были созданы (а не в конечном состоянии).
Это означает, что конечное состояние (после обработки всех событий) будет иметь .actions
массив из всех накопленных действий из промежуточных состояний. Каждое из этих действий будет привязано к соответствующим промежуточным состояниям.
ПРЕДУПРЕЖДЕНИЕ
Только одно состояние — конечное состояние (т. е. результирующее состояние после обработки всех событий) — будет отправлено прослушивателю .onTransition(...)
. Это делает пакетные события оптимизированным подходом к производительности.
СОВЕТ
Пакетные события полезны для подходов к источнику событий (opens new window). Журнал событий можно сохранить и позже воспроизвести, отправив пакетные события в службу для достижения того же состояния.
Transitions
Прослушиватели для переходов состояний регистрируются с помощью метода .onTransition(...)
, который принимает прослушиватель состояния. Слушатели состояния вызываются каждый раз, когда происходит переход состояния (включая начальное состояние), с текущим состоянием экземпляра
:
TIP
вызывается при изменении состояния (то есть при изменении
, state.context
изменения или есть новые state.actions
), используйте state.changed
(открывает новое окно):
СОВЕТ
Обратный вызов .onTransition()
не будет выполняться между переходами без событий («всегда») или другие микрошаги. Он работает только на макрошагах.
Микрошаги — это промежуточные переходы между макрошагами.
Запуск и остановка
Служба может быть инициализирована (т. е. запущена) и остановлена с помощью .start()
и .stop()
. Вызов .start()
немедленно переведет службу в исходное состояние. Вызов .stop()
удалит всех прослушивателей из службы и выполнит очистку всех прослушивателей, если это применимо.
Службы можно запустить из определенного состояния, передав состояние
в service.start(state)
. Это полезно при повторной гидратации службы из ранее сохраненного состояния.
Выполнение действий
Действия (побочные эффекты) по умолчанию выполняются немедленно при изменении состояния. Это настраивается путем установки { execute: false }
опция (см. пример). Каждый объект действия, указанный в состоянии , может иметь свойство .exec
, которое вызывается с контекстом состояния и объектом
события
.
Действия можно выполнять вручную, вызывая service.execute(state)
. Это полезно, когда вы хотите контролировать, когда выполняются действия:
waitFor
Многие бэкэнд-коды основаны на кратковременных процессах, таких как бэкэнд-функции. Это особенно верно в бессерверных контекстах, где код должен загружаться и выключаться как можно быстрее.
Большая часть этого типа кода зависит от асинхронных
функций:
Лучший шаблон для асинхронных функций — это waitFor
, который дает вам возможность await
конечного автомата, находящегося в определенном состоянии.
В приведенном выше примере машина ждет три секунды, прежде чем перейти в состояние done
, после чего await
разрешится, и программа продолжит работу.
По умолчанию ждать
выдаст ошибку через 10 секунд, если желаемое состояние не будет достигнуто. Вы можете настроить этот тайм-аут, передав timeout
в параметрах:
waitFor
также выдаст ошибку, если достигнет конечного состояния , отличного от выбранного вами. Для получения дополнительной информации о конечных состояниях нажмите здесь.
Параметры
Следующие параметры могут быть переданы интерпретатору в качестве 2-го аргумента ( интерпретировать(машина, параметры)
):
-
execute
(логическое значение) — указывает, следует ли выполнять действия состояния при переходе. По умолчаниюtrue
.- См. «Выполнение действий» для настройки этого поведения.
-
deferEvents
(логическое значение) 4.4+ — указывает, следует ли откладывать события, отправленные в неинициализированный сервис (т. е. до вызоваservice.start()
), до инициализации сервиса.