23.03.2023 11:55:51
.
Изменено: |
|
|
|
23.03.2023 18:00:45
Относительно недавно (начиная с платформы 8.3.18) во встроенный язык были добавлены методы вида «Асинх». Их основное преимущество заключается в более простой структуре и наглядности самого программного кода. Если в методах обратного вызова программный код фрагментирован: есть Основная процедура, вызывающая асинхронный метод, а есть дополнительная, в которой этот асинхронный метод реализован. Это усложняет восприятие программного кода разработчиком, тем более, что асинхронная функция может располагаться по тексту далеко от основной функции и даже может быть вынесена в другой модуль. С этой точки зрения «Асинх» методы нагляднее: располагаются в одной процедуре, операторы выполняются последовательно – такая же простота восприятия кода, как и для синхронных методов. Для пользователя никакой разницы не будет, от того, какой асинхронный методы вы используете: «Показать» или «Асинх». |
|||
|
|
23.03.2023 18:02:49
Т.е. методы «Показать» - это старая технология, сохраненная для совместимости, а «Асинх» новая, ее и следует далее использовать? |
|||||
|
|
23.03.2023 18:06:44
«Старая», «новая» - да. Но я бы не стал списывать со счетов методы «Показать», они более универсальны. Например, у «Асинх» методов есть одно ограничение: если в такой асинхронной функции возникло исключение, то его нельзя будет перехватить и как-то обработать; оно сразу будет показано пользователю, например ошибка «Деление на 0». Или возможность методов вида «Показать» располагать обработчик оповещения в другом модуле в некоторых случаях может быть удобным. |
|||||||
|
|
23.03.2023 18:09:59
Есть какой-нибудь способ поработать с исключениями в асинхронной функции? |
|
|
|
23.03.2023 18:13:44
.
Изменено: |
|
|
|
23.03.2023 18:16:42
Использую «Ждать» для выбора файла, код такой: «Ждать Диалог.ВыбратьАсинх();». Как из него получить результат выбора? |
|
|
|
23.03.2023 18:19:30
Оператор «Ждать» как раз и возвращает результат. Его нужно просто присвоить переменной, т.е. записать примерно так: масФайлов = Ждать Диалог.ВыбратьАсинх(). Результатом работы асинхронной функции, в вашем примере это Диалог.ВыбратьАсинх(), является объект типа «Обещание». Если асинхронная функция отработала штатно (обещание находится в состоянии «Завершено успешно»), то она вернет результат своей работы, в вашем примере это массив выбранных файлов, либо «Неопределено», если пользователь отказался от выбора файла. Если же при выполнении асинхронной функции возникла ошибка (обещание находится в состоянии “Завершено с ошибкой”), то эта функция вернет Исключение. Оператор «Ждать» выполняет ожидание завершения работы асинхронной функции и принимает от нее результат ее работы, который можно присвоить переменной и использовать дальше в основном коде. |
||||
|
|
|||