Я работаю над веб-приложением диспетчера паролей, которое использует pbkdf2.js Парвеза Анандама для генерации ключей (то есть превращая текстовый пароль в подходящий 256-битный ключ для AES). Я использую проект для изучения coffeescript. У меня возникли проблемы с получением данных из обратных вызовов. Вот мой код:
keygen = (password, salt, iterations) ->
key = 1
pbkdf = new PBKDF2 password, salt, iterations, size_in_bytes
pbkdf.deriveKey ((p) ->), ((k) ->
key = k
console.log "within callback " + key
)
console.log "straight line path " + key
Поскольку производный ключ возвращается немедленно, у меня нет данных — в последней строке выводится «1». Каков правильный способ справиться с этим? В java я ожидал бы вернуть объект, похожий на Future, к которому я мог бы присоединиться или подождать, но я понимаю, что мои бэкэнд-привычки могут не подходить для кода пользовательского интерфейса. Должен ли я вызывать функцию «продолжить» из обратного вызова, которая переходит к шифрованию и отправке формы?