Я ищу, чтобы увидеть, есть ли способ использовать общую функцию асинхронизации, такую как AJAX или веб-рабочий в сообщении, и заставить его вести себя синхронно.javascript синхронные обратные вызовы
Прежде всего - мне действительно нужно это поведение, я знаю все аргументы в отношении асинхронных обратных вызовов и возвращает - но в этом случае мне действительно нужно дождаться обратного вызова.
Если нет универсального решения, я бы согласился на тот, который работает исключительно на Worker.prototype.onmessage
, так как здесь используется основной вариант использования.
Я уверен, что ответ будет «это невозможно», но я хотел проверить перед сдачей.
Я уже рассмотрел обещания и генераторы, я бы предпочел не использовать стороннюю библиотеку (я знаю о волокнах/фьючерсах для узла).
Потенциальный случай использование:
function main(){
worker = new Worker("someWorker.js")
var result = worker.onmessage(function(event){
return event.data;
})
//wait for worker.onmessage
return result;
}
Связанный вопрос jQuery: http://stackoverflow.com/q/133310/901048 – Blazemonger
@Blazemonger, спасибо - но это будет работать только для вызовов ajax. Определенно стоит отметить, хотя –
Просто запустите работника и поместите весь синхронный код, который зависит от результата работы, в обратном вызове 'onmessage'. Обещания и генераторы просто решают одну и ту же проблему с большей элегантностью. – Vaclav