From 588bb2e0fa38cd3269d8ee578cf16beb4436328f Mon Sep 17 00:00:00 2001 From: sfaqer Date: Fri, 11 Aug 2023 17:54:55 +1000 Subject: [PATCH] =?UTF-8?q?1.=20=D0=9C=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=90=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=B2=20=D0=9E=D0=B1=D0=B5?= =?UTF-8?q?=D1=89=D0=B0=D0=BD=D0=B8=D1=8F=202.=20=D0=92=20API=20=D0=9E?= =?UTF-8?q?=D0=B1=D0=B5=D1=89=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=BE=D1=88=D0=B5=D0=BD=D0=BE=20=D1=81=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D0=B5=20=D0=B8=D1=81=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 ++++++++++- packagedef | 2 +- ...21\211\320\260\320\275\320\270\320\265.os" | 15 +++++++++++++ ...21\211\320\260\320\275\320\270\321\217.os" | 0 ...21\211\320\260\320\275\320\270\320\265.os" | 22 +++++++++++++++++-- ...21\211\320\260\320\275\320\270\321\217.os" | 4 ++-- 6 files changed, 50 insertions(+), 6 deletions(-) rename "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\320\276\321\201\321\202\321\214.os" => "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\321\217.os" (100%) rename "tests/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\320\276\321\201\321\202\321\214.os" => "tests/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\321\217.os" (89%) diff --git a/README.md b/README.md index 5301e50..633eb80 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## Программный интерфейс -### Модуль Асинхронность +### Модуль Обещания #### ВыполнитьЛямбду @@ -89,3 +89,14 @@ // Функция Поймать(Алгоритм) ``` + +#### Состояние + +```bsl +// Возвращает текущее состояние исполнения обещания +// +// Возвращаемое значение: +// СостояниеФоновогоЗадания - Текущее состояние +// +Функция Состояние() +``` diff --git a/packagedef b/packagedef index a5e35c3..36a5d16 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("async") - .Версия("0.1.0") + .Версия("0.2.0") .Автор("Кирилл Черненко") .АдресАвтора("https://github.com/sfaqer") .Описание("Фреймворк асинхронного исполнения для OneScript") diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\320\265.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\320\265.os" index c33deaa..4d2b07c 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\320\265.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\320\265.os" @@ -94,6 +94,21 @@ КонецФункции +// Возвращает текущее состояние исполнения обещания +// +// Возвращаемое значение: +// СостояниеФоновогоЗадания - Текущее состояние +// +Функция Состояние() Экспорт + + Если Задание = Неопределено Тогда + Возврат СостояниеФоновогоЗадания.НеВыполнялось; + Иначе + Возврат Задание.Состояние; + КонецЕсли; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\320\276\321\201\321\202\321\214.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\321\217.os" similarity index 100% rename from "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\320\276\321\201\321\202\321\214.os" rename to "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\321\217.os" diff --git "a/tests/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\320\265.os" "b/tests/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\320\265.os" index 1c2855f..8f5c53a 100644 --- "a/tests/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\320\265.os" +++ "b/tests/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\320\265.os" @@ -95,10 +95,28 @@ КонецПроцедуры +&Тест +Процедура Состояние() Экспорт + + НеЗапущенноеОбещание = Новый Обещание("", ""); + Утверждения.ПроверитьРавенство(НеЗапущенноеОбещание.Состояние(), СостояниеФоновогоЗадания.НеВыполнялось); + + Обещание = Обещание(); + + Приостановить(10); + + Утверждения.ПроверитьРавенство(Обещание.Состояние(), СостояниеФоновогоЗадания.Активно); + + Приостановить(100); + + Утверждения.ПроверитьРавенство(Обещание.Состояние(), СостояниеФоновогоЗадания.Завершено); + +КонецПроцедуры + Функция Обещание() - Возврат Асинхронность.ВыполнитьЛямбду("() -> Приостановить(100); Возврат 1", ЭтотОбъект, Новый Массив); + Возврат Обещания.ВыполнитьЛямбду("() -> Приостановить(100); Возврат 1", ЭтотОбъект, Новый Массив); КонецФункции Функция ОбещаниеСОшибкой() - Возврат Асинхронность.ВыполнитьЛямбду("() -> ВызватьИсключение ""ЯОшибка""", ЭтотОбъект, Новый Массив); + Возврат Обещания.ВыполнитьЛямбду("() -> ВызватьИсключение ""ЯОшибка""", ЭтотОбъект, Новый Массив); КонецФункции diff --git "a/tests/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\320\276\321\201\321\202\321\214.os" "b/tests/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\321\217.os" similarity index 89% rename from "tests/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\320\276\321\201\321\202\321\214.os" rename to "tests/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\321\217.os" index 1d3c7e0..dc6d67d 100644 --- "a/tests/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\320\276\321\201\321\202\321\214.os" +++ "b/tests/\320\236\320\261\320\265\321\211\320\260\320\275\320\270\321\217.os" @@ -12,7 +12,7 @@ // Когда - Обещание = Асинхронность.ВыполнитьЛямбду( + Обещание = Обещания.ВыполнитьЛямбду( "(Первое, Второе) -> Возврат СложитьСЗадержкой(Первое, Второе)", ЭтотОбъект, Параметры @@ -35,7 +35,7 @@ // Когда - Обещание = Асинхронность.ВыполнитьДелегат( + Обещание = Обещания.ВыполнитьДелегат( Новый Действие(ЭтотОбъект, "СложитьСЗадержкой"), Параметры );