|
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
|
|
Коллбэки22.01.2018, 15:54. Показов 48326. Ответов 5
Метки нет (Все метки)
Иногда бывают ситуации, когда вы хотите поручить управление программой функции, а не ориентироваться на результат её выполнения. Этому может быть много причин.
Во-первых, это упрощает код, который пользуется вашей функцией. Во-вторых, бывают программы, в которых несколько наборов команд выполняется параллельно и независимо друг от друга. Например, когда ваша программа подключается к интернету, это обычно делается параллельно с работой остальной программы, ведь запрос может занять как долю секунды, так и минуты. Так же обычно поступают, когда вычисление занимает очень много времени. Взаимодействие с пользователем тоже может занимать очень много времени по меркам компьютерной программы - секунды на то, чтобы пользователь ввёл текст. Было бы очень неудобно, если бы, пока выполняется запрос, зависла бы вся программа. Проблема с частями программы, которые выполняются независимо друг от друга – в том, что основная программа не может отследить, когда интернет-запрос завершится, если только не будет постоянно это проверять. Зато сам запрос точно знает, когда он завершился и может что-то сделать по завершении. Например, показать вам загруженную картинку или обновить ленту сообщений. А иногда – сообщить о том, что произошла ошибка. Но на результат завершения одного и того же запроса можно реагировать по-разному: иногда не нужно делать ничего, в других случаях – показать результат, в третьих – сохранить результат в файл и так далее. Значит, программе нужно знать, как реагировать на окончание запроса. Это делается при помощи так называемых коллбэков (callback), что переводится как обратный звонок. Коллбэком называется специальная функция, которая вызывается, когда ваше вычисление завершилось. Для программы, запустившей запрос или долгое вычисление, коллбэк – это способ сообщить, что надлежит сделать, когда вычисление завершится. Коллбэк обычно передают как аргумент функции запуска вычисления. ________________________________________ __________________________ Ваша задача – написать функцию askPassword(success, failure), которая спрашивает у пользователя логин и пароль и проверяет его правильность. Пароль считается правильным, если в нём содержится ровно три английские гласные буквы (гласными считать буквы a,e,i,o,u,y) и ровно такой же набор согласных (все буквы, кроме перечисленных шести), как в логине. Порядок и количество согласных также должно совпадать. Считается, что логин и пароль написаны в нижнем регистре. Не будет ошибкой, если вы все введённые символы логина и пароля, сразу приведете к нижнему регистру. Пример: для логина “login” подойдут пароли “aaalgn” и “luagon“. Если пароль правильный, функция должна вызвать коллбэк success, передав ему в качестве аргумента логин. А если пароль был неверный - failure, передав ему в качестве аргументов логин и сообщение об ошибке (в таком порядке). Сообщение об ошибке должно быть одним из трёх вариантов: “Wrong number of vowels”, если в пароле неверное число гласных; “Wrong consonants”, если в пароле набор согласных отличается от набора согласных логина; “Everything is wrong”, если оба условия нарушены. Также напишите функцию main(), которая вызывает написанную функцию так, чтобы в случае успеха она печатала “Привет, {логин}!”, а в случае ошибки – “Кто-то пытался притвориться пользователем {логин}, но в пароле допустил ошибку: {текст ошибки, большими буквами}.”. Внимание! При вводе логина и пароля НЕ выводите подсказку для пользователя вида “Введите логин:”, так как это собьет с толку проверяющую систему.
0
|
|
| 22.01.2018, 15:54 | |
|
Ответы с готовыми решениями:
5
Коллбэки Потоки или коллбэки? |
|
3 / 3 / 0
Регистрация: 02.01.2018
Сообщений: 9
|
|
| 31.01.2018, 21:20 | |
|
Делай сам Господин Павлин.Такое ощущение,что вы не учитесь,просто списываете готовый код
1
|
|
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 31.01.2018, 21:57 | |
|
Это не ощущение, это факт. Человек обалдевший.
1
|
|
|
67 / 64 / 3
Регистрация: 02.11.2019
Сообщений: 227
|
|
| 05.02.2020, 18:09 | |
|
Да ладно, человек не понимает, а вы смеётесь
вот решение: Коллбэки или проверка пароля
2
|
|
|
67 / 64 / 3
Регистрация: 02.11.2019
Сообщений: 227
|
|
| 05.02.2020, 18:34 | |
|
У, тогда извиняюсь, не туда попал
0
|
|
| 05.02.2020, 18:34 | |
|
Помогаю со студенческими работами здесь
6
Зачем нужны коллбэки? Нужны ли коллбэки или это синтаксический сахарок сомнительно Почему BLE-коллбэки "перебивают" выполнение кода handler? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|