Я хотел бы написать функцию, которая выполняет обратный вызов и вызывает его после выполнения функции.Обратные вызовы, которые не блокируются
Это очень просто:
var callback = function (ref) {
var i = 1337;
while (i--) {
console.log(ref, 'callback');
}
};
var someFoo = function (ref, callback) {
console.log(ref, 'self');
callback(ref);
}
someFoo('one', callback); // 1
someFoo('two', callback); // 2
Но здесь я столкнулся с этой проблемой: сначала someFoo
блоки вызова до тех пор, пока Allback закончена. Это означает, что этот код эквивалентен этому (который блокирует, пока каждая функция не закончена):
someFoo('one');
callback('one');
someFoo('two');
callback('two');
Теперь вопрос: Как сделать асинхронный обратный вызов вызов?
Это похоже на грязный хак. Существуют ли также «официальные» способы? –
@WaleryStrauch Nope, только другие способы будут более грязными. – Paulpro
Это не грязный хак. JavaScript-код синхронно, как ответил Майк Томпсон. Единственный источник «асинхронного» исполнения - это внешнее влияние (например, браузер, отвечающий на события или таймеры). – Sacho