![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: нет Всего: 74 |
Привет! Подскажите, как быть в случае, если я в функции А вызываю другую функцию Б, которой передаю коллбэк В, в который приходят данные - как их вернуть из функции А?
Добавлено через 3 минуты и 58 секунд Знаю вариант - передавать в А коллбэк из места вызова, а там получать потом данные. Но из этого порочного круга коллбэков разве не выйти? -------------------- Всем добра |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Единственный вариант — функция A должна блокировать дальнейшее исполнение скрипта, пока не отработает callback-функция, т.е. весь процесс должен быть синхронным. Если объекты FileReader могут работать не асинхронно (хотя мне об этом не известно), то только в этом случае ф-ция A может вернуть разультат работы callback-функции.
Но вообще правильнее было бы именно работать в асинхронном режиме, и все действия, зависящие от результата работы callback-функции, выполнять именно из callback-функции, а не из исходной функции, инициирующей запросы. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: нет Всего: 74 |
Просто логика функции в том, чтобы получить на вход путь и на выходе строку base64.
А как заблокировать дальнейшее исполнение скрипта? У меня мобильное приложение, не страшно, если заблокировать. -------------------- Всем добра |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Судя, по спецификации, API синхронного механизма чтения все же было предусмотрено в виде интерфейса FileReaderSync, который используется в приложениях с фоновыми вычислениями (Web Workers). Хотя хз, насколько это вам подойдет.
Добавлено через 2 минуты и 18 секунд
Я бы сделал, чтобы ф-ция getBase64ByPath сама принимала параметр в виде пользовательской callback функции, которая вызывалась бы из метода reader.onloadend с результатами обработки. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: нет Всего: 74 |
Увы, у меня не тот FileReader - у меня он из пакета Phonegap. А там ни намека в документации на синхронность
-------------------- Всем добра |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
||||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: нет Всего: 74 |
Эх, опять лапша будет :(
-------------------- Всем добра |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |