Я новичок в JavaScript и из различных ресурсов, которые я прочитал, что функции JavaScript являются асинхронными, если они связаны с Callbacks. После тщательного поиска в течение 10 дней в Интернете я не смог найти объяснение того, как Callbacks в JavaScript запускается асинхронно. Некоторые примеры с AJAX приведены, но они не дают четкого ответа, может ли кто-нибудь объяснить, как обратные вызовы в JavaScript выполняются асинхронно для приведенного ниже кода?Асинхронный JavaScript с использованием обратных вызовов
function myFunc(a,b,callback){
var callbackValue = callback();
var add= a+b;
var subt= a-b;
var mult= a*b;
var div= a/b;
...
...
...
...
...
var totalValue= add+callbackValue;
}
function myFunc(a,b,function(){//complex scientific operation which takes 10 secs });
Как я использую функцию обратного вызова в «MyFunc» в приведенном выше коде, это значит, что, когда обратного вызова() вызывается в «MyFunc», он работает в асинхронном режиме и выполнение программы продолжается с вар оных = а + Ь; var subt = a-b; ......... ....... не дожидаясь результата обратного вызова() ;?
Нет, просто передача функций в качестве аргумента не делает ничего асинхронным. Асинхронными вещами в JavaScript являются такие вещи, как 'setTimeout',' setInterval', обработчики событий, веб-рабочие и т. Д. Так что в зависимости от того, что делает обратный вызов, когда вы говорите «который занимает 10 секунд», если он не использует асинхронный функция, это не асинхронно. – Ian
Пример асинхронного обратного вызова: http://jsfiddle.net/92yxc/. Причина, по которой необходим обратный вызов, заключается в том, что анонимная функция, запускаемая 'setTimeout', должна запускаться 1000 мс с момента выполнения« setTimeout ». Поэтому функция 'test' не может вернуть требуемое значение, и вместо этого вы должны использовать обратный вызов, чтобы обратный вызов имел доступ к значению, когда он доступен (от 1000 мс от) – Ian
@Ian: Я думаю, вы должны сделать это ответ. –