Я имею в виду, проверить его это code:Как создать асинхронную функцию в Javascript?
<a href="#" id="link">Link</a>
<span>Moving</span>
$('#link').click(function() {
console.log("Enter");
$('#link').animate({ width: 200 }, 2000, function() {
console.log("finished");
});
console.log("Exit");
});
, как вы можете видеть в консоли, функция «одушевленные» является асинхронной, и «вилка» поток блочного кода обработчика событий. Фактически:
$('#link').click(function() {
console.log("Enter");
asyncFunct();
console.log("Exit");
});
function asyncFunct() {
console.log("finished");
}
следует за потоком блок-кода!
Если я хочу создать мой function asyncFunct() { }
с таким поведением, как я могу это сделать с помощью javascript/jquery? Я думаю, что есть стратегия без использования setTimeout()
посмотрите на источники jQuery :) – yatskevich
. .animate() mathod использует обратный вызов. Анимация вызовет обратный вызов, когда анимация будет завершена. Если вам нужно то же поведение .animate(), что вам нужно, это обратный вызов (вызываемый функцией «main» после некоторых других операций). Другое дело, если вам нужна «полная» асинхронная функция (функция, называемая с блокировкой потока выполнения). В этом случае вы можете использовать setTimeout() с задержкой около 0. –
@Fabio Buda: почему callback() должен реализовывать своего рода асинхронное? На самом деле, это не http://jsfiddle.net/5H9XT/9/ – markzzz