@zlodiak

Почему не выводится результат из Observable?

Попробовал реализовать Observable на нативном js, но не получилось вывести ожидаемый результат. Этот код вместо результата выводит undefined. Помогите пожалуйста исправить код.
class Observable{
	
	constructor(source) {
		this.source = source.split('');
		this.result = this.source;
	}

	subscribe(next) {
		for(let item of this.result) {
			next(item);
		}
	}

	filter(predicate) {
		this.result = this.result.filter(predicate);
		return this;
	}

	map(callback) {
		this.result = this.result.map(callback);
		return this;
	}	

}

new Observable('qwerty')
	.map((letter) => { letter.toUpperCase() })
	.filter((letter) => { letter === 'W' })
	.subscribe((letter) => { console.log(letter) });
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Этот код вместо результата выводит undefined.

Под "выводит" вы подразумеваете результат вызова console.log, да? Что ж, ничего ваш код не выводит - console.log не вызывается ни разу, undefined возникает в консоли потому, что последнее, что вы делаете - вызываете метод subscribe, который ничего не возвращает.

Отсутствие вывода обусловлено пустотой массива result, а пуст он потому, что... Нет, не буду объяснять - разберитесь, как стрелочными функциями пользоваться, и найдите свои ошибки сами.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы