Класс fcf.Actions
Объект выполнения асинхронных действий. Реализует задачи объекта Promise, но не разрывает задачу исполнения, сохраняет контекст запроса на стороне сервера, а также использует расширенный набор методов.
Описание класса
Методы
fcf.Actions finally(function a_cb) - Функция добавляет отложенное действие в очередь обработки, которое выполняется как в случае возникновения ошибки, так и при успешном выполнении
Методы
fcf.Actions asyncEach(object|array|function a_collection, function a_cb)
Выполняет множественный параллельный запуск асинхронной задачи a_cb с параметрами указанными в параметре a_collection
Аргументы:
object|array|function a_collection - Коллекция с параметрами запуска асинхронной задачи.
В качестве параметра может выступать функция, которая должна возвращать коллекцию. Вызов вызов функции выполняется перед выполнением задачи.
function a_cb - Обратный вызов функции обработчика асинхронной операции, который выполняется по каждому элементу коллекции a_collection
Функция имеет две сигнатуры, от которых зависит поведение метода.
-
mixed func(mixed a_key, mixed a_value, mixed a_res) - Действие функции считается завершенным после выполнения метода или после выполнения возвращенного
объекта Promise|fcf.Actions.
-
mixed func(mixed a_key, mixed a_value, mixed a_res, fcf.Actions.Act a_act) - Действие обработчика считается завершенным после вызова fcf.Action.Act.сomplate() на объекте a_act или fcf.Action.Act.error() в случае возникновения ошибки.
mixed a_key - ключ элемента коллекции
mixed a_value - значение элемента коллекции
mixed a_res - результат предыдущего обработчика
fcf.Actions.Act a_act - объект подтверждения завершения обработчика
Возвращаемое значение:
fcf.Actions
Возвращает указатель на себя
Примеры
Пример 1
Пример использования метода
let actions = new fcf.Actions()
actions.asyncEach(["one", "two", "three"], (a_key, a_value, a_res, a_act)=>{
setTimeout(()=>{
console.warn(a_value);
a_act.complete();
}, Math.floor(Math.random() * 1000))
})
.then(()=>{
console.warn("complete");
})
Результат:
three
one
two
complete
fcf.Actions catch(function a_cb)
Добавляет функцию обработчик ошибки к набору отложенных операций
Аргументы:
function a_cb - Функция обработки ошибки. Сигнатура функции: function(ErrorObject a_error);
Возвращаемое значение:
fcf.Actions
Возвращает указатель на себя
fcf.Actions each(object|array|function a_collection, function a_cb)
Выполняет множественный запуск асинхронной задачи a_cb с параметрами указанными в параметре a_collection
Аргументы:
object|array|function a_collection - Коллекция с параметрами запуска асинхронной задачи.
В качестве параметра может выступать функция, которая должна возвращать коллекцию. Вызов вызов функции выполняется перед выполнением задачи.
function a_cb - Обратный вызов функции обработчика асинхронной операции, который выполняется по каждому элементу коллекции a_collection
Функция имеет две сигнатуры, от которых зависит поведение метода.
-
mixed func(mixed a_key, mixed a_value, mixed a_res) - Действие функции считается завершенным после выполнения метода или после выполнения возвращенного
объекта Promise|fcf.Actions.
-
mixed func(mixed a_key, mixed a_value, mixed a_res, fcf.Actions.Act a_act) - Действие обработчика считается завершенным после вызова fcf.Action.Act.сomplate() на объекте a_act или fcf.Action.Act.error() в случае возникновения ошибки.
mixed a_key - ключ элемента коллекции
mixed a_value - значение элемента коллекции
mixed a_res - результат предыдущего обработчика
fcf.Actions.Act a_act - объект подтверждения завершения обработчика
Возвращаемое значение:
fcf.Actions
Возвращает указатель на себя
Примеры
Пример 1
Пример использования метода
let actions = new fcf.Actions()
actions.each(["one", "two", "three"], (a_key, a_value, a_res, a_act)=>{
setTimeout(()=>{
console.warn(a_value);
a_act.complete();
}, Math.floor(Math.random() * 1000))
})
Результат:
one
two
three
fcf.Actions error(ErrorObject a_error)
Завершает очередь исполнения с ошибкой
Аргументы:
ErrorObject a_error - Объект ошибки
Возвращаемое значение:
fcf.Actions
Указатель на себя
fcf.Actions finally(function a_cb)
Функция добавляет отложенное действие в очередь обработки, которое выполняется как в случае возникновения ошибки, так и при успешном выполнении
Аргументы:
function a_cb - Обратный вызов функции обработчика. Сигнатура функции: function()
Возвращаемое значение:
fcf.Actions
Указатель на себя
fcf.Actions then(function a_cb, function a_cberror = undefined)
Помещает задачу в очередь выполнения, переданную в параметре a_cb
Аргументы:
function a_cb - Обратный вызов функции обработчика.
Функция имеет две сигнатуры, от которых зависит поведение метода.
-
mixed func(mixed a_res) - Действие функции считается завершенным после выполнения метода или после выполнения возвращенного
объекта Promise|fcf.Actions.
-
mixed func(mixed a_res, fcf.Actions.Act a_act) - Действие обработчика считается завершенным после вызова fcf.Action.Act.сomplate() на объекте a_act или fcf.Action.Act.error() в случае возникновения ошибки.
mixed a_res - результат предыдущего обработчика
fcf.Actions.Act a_act - объект подтверждения завершения обработчика
function a_cberror - Функция обработки ошибки. Сигнатура функции: function(ErrorObject a_error);
Возвращаемое значение:
fcf.Actions
Возвращает указатель на себя
Примеры
Пример 1
Пример использования метода fcf.Actions.then() в режиме без подтверждения завершения операции.
async function test(){
let actions = new fcf.Actions();
return actions
.then(()=>{
return new Promise(function(resolve, reject) {
setTimeout(()=>{
console.warn("action 1");
resolve("001");
}, 1000);
});
}).
then((a_res)=>{
console.warn(`result action 1: ${a_res}`);
console.warn("action 2");
return "002";
})
}
let resultAction2 = await test();
console.warn(`result action 2: ${resultAction2}`);
console.warn("exit");
Результат:
action 1
result action 1: 001
action 2
result action 2: 002
exit
Пример 2
Пример использования метода fcf.Actions.then() в режиме подтверждения завершения операции.
async function test(){
let actions = new fcf.Actions();
return actions
.then((a_res, a_act)=>{
setTimeout(()=>{
console.warn("action 1");
a_act.complete("001")
}, 1000);
}).
then((a_res)=>{
console.warn(`result action 1: ${a_res}`);
console.warn("action 2");
return "002";
});
}
let resultAction2 = await test();
console.warn(`result action 2: ${resultAction2}`);
console.warn("exit");
Результат:
action 1
result action 1: 001
action 2
result action 2: 002
exit