Skip to content

dima117/shri-async-hw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

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

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