🆘 Как создать Pull Request
Мы очень хотим, чтобы код вы написали сами, а не пользовались внешними библиотеками.
Прежде чем отправлять решение, проверьте его на соответствие общим требованиям.
Когда вы создадите или обновите пулл-реквест, он автоматически будет проверен на соответствие кодстайлу и базовую работоспособность. Результаты вы увидите внизу:
Если всё хорошо:
2015年10月08日_1845
Если всё плохо:
2015年10月08日_1841
Проверить можно и вручную:
// Устанавливаем проверяльщик npm install // Проверяем npm test // В результате выведутся ошибки, если они есть // Если какие-либо ошибки будут непонятны – смело спрашиваем у ментора
От вечеринок и мальчишников возвращаемся в мрачные стены университета — время слушать лекцию.
В файле index.js вас ждут студенты, готовые внимать каждому слову преподавателя:
var daria = { focus: 5 }; lecturer.on('begin', daria, function () { this.focus += 1; });
Студента можно подписать на событие, производимое преподавателем (например, начало лекции или показ нового слайда) — то есть указать, какая функция должна быть вызвана при наступлении этого события.
Ваша задача — реализовать несколько методов:
- подписка на событие —
on - отписка от события —
off - вызов события —
emit
var getEmitter = require('./emitter'); var lecturer = getEmitter(); // подписываем студента daria на событие slide lecturer.on('slide', daria, function () { console.log('Новый слайд!'); }); // вызываем событие slide lecturer.emit('slide'); // 'Новый слайд!' // отписываем студента daria от события slide lecturer.off('slide', daria); // вызываем событие slide lecturer.emit('slide'); // обработчик не выполнился
Чтобы задания не казалось совсем простым, вам также нужно реализовать поддержку пространства имён.
lecturer.on('slide', daria, function () { console.log('Новый слайд!'); }); lecturer.on('slide.funny', daria, function () { console.log('Новый смешной слайд!'); }); lecturer.emit('slide'); // 'Новый слайд!' lecturer.emit('slide.funny'); // 'Новый смешной слайд!' // 'Новый слайд!' lecturer.emit('slide.text'); // 'Новый слайд!'
Подробности вас ждут в файле index.js.
Необходимо реализовать два дополнительных метода эмиттера. Оба метода работают аналогично on, но обладают некоторыми особенностями.
lecturer.several('slide', daria, function () { console.log('Новый слайд!'); }, 2); // обработчик должен выполнится только дважды lecturer.emit('slide'); // 'Новый слайд!' lecturer.emit('slide'); // 'Новый слайд!' lecturer.emit('slide'); // обработчик не выполнился
lecturer.through('slide', daria, function () { console.log('Новый слайд!'); }, 2); // обработчик должен выполниться на второй, четвёртый, шестой (и так далее) раз lecturer.emit('slide'); // обработчик не выполнился lecturer.emit('slide'); // 'Новый слайд!' lecturer.emit('slide'); // обработчик не выполнился lecturer.emit('slide'); // 'Новый слайд!' lecturer.emit('slide'); // обработчик не выполнился lecturer.emit('slide'); // 'Новый слайд!'