Во-первых, это очень конкретный случай, когда вы делаете это неправильно, чтобы модифицировать асинхронный вызов в очень синхронную кодовую базу, которая длится много тысяч строк, а время в настоящее время не позволяет им вносить изменения "сделать это правильно". Это вредит каждому слою моего существа, но реальность и идеалы часто не мешают. Я знаю, что это отстой.
Хорошо, это из-за этого, как я могу сделать это, чтобы я мог:
function doSomething() {
var data;
function callBack(d) {
data = d;
}
myAsynchronousCall(param1, callBack);
// block here and return data when the callback is finished
return data;
}
В примерах (или их отсутствии) используются библиотеки и/или компиляторы, обе из которых не являются жизнеспособными для этого решения. Мне нужен конкретный пример того, как сделать блок (например, НЕ оставлять функцию doSomething до вызова обратного вызова) БЕЗ замораживания пользовательского интерфейса. Если такое возможно в JS.