shri-async-hw

Домашнее задание ШРИ по теме “Асинхронность”

Вам дан асинхронный 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 = // реализация