Домашнее задание ШРИ по теме "Асинхронность"
Вам дан асинхронный API, реализующий арифметические действия, операции сравнения и операции над элементами массива. Каждый метод API последним аргументом принимает callback, который будет вызван после окончания асинхронного действия. В файле example.html можно посмотреть примеры использования.
Задания
Нужно написать функцию, которая реализует задание вашего варианта. Массивами, математическими операциями и операциями сравнения пользоваться нельзя. Код нужно разместить на отдельной страничке и выложить её на GitHub Pages.
Вариант 1
Найти максимальный элемент в массиве.
function(array: AsyncArray, cb: (result: Number) => void) {
}
Вариант 2
Найти среднее арифметическое.
function(array: AsyncArray, cb: (result: Number) => void) {
}
Вариант 3
Реализовать сложение векторов (размерность векторов может быть больше 2).
function(v1: AsyncArray, v2: AsyncArray, cb: (result: AsyncArray) => void) {
}
Вариант 4
Посчитать площадь треугольника.
function(x1: Number, y1: Number, x2: Number, y2: Number, x3: Number, y3: Number,
cb: (result: Number) => void) {
}
Вариант 5
Решить квадратное уравнение. Квадратное уравнение — уравнение вида ax² + bx + c = 0
, где a
, b
, c
— некоторые числа (a ≠ 0), x
— неизвестное.
function(a: Number, b: Number, c: Number, cb: (result1?: Number, result2?: Number) => void) {
}
Вариант 6
Посчитать сумму всех нечетных чисел в массиве.
function(array: AsyncArray, cb: (result: Number) => void) {
}
Вариант 7
Посчитать сумму элементов массива с четными индексами.
function(array: AsyncArray, cb: (result: Number) => void) {
}
Вариант 8
Реализовать операцию map для асинхронного массива.
function map(
array: AsyncArray,
fn: (cur: any, idx: Number, src: AsyncArray) => any,
cb: (result: AsyncArray) => void) {
}
Вариант 9
Реализовать операцию reduce для асинхронного массива.
function reduce(
array: AsyncArray,
fn: (acc: any, cur: any, idx: Number, src: AsyncArray) => any,
initialValue: any,
cb: (result: any) => void) {
}
Вариант 10
Реализовать операцию filter для асинхронного массива.
function filter(
array: AsyncArray,
fn: (cur: any, idx: Number, src: AsyncArray) => Boolean,
cb: (result: AsyncArray) => void) {
}
Бонусное задание
Реализовать в отдельном файле собственную версию методов:
Promise._any = // реализация
Promise._allSettled = // реализация
Promise.prototype._finally = // реализация