Я изучал много многопоточность, обратный вызов, диспетчерскую очередь, синхронно и асинхронно ... Чем больше я занимаюсь, тем больше я получал смущен и расстроен до такой степени, что я чувствую, что не могу кажется, понимают это когда-либо .. пожалуйста, кто-то может привести меня к правильному направлению, чтобы начать. Большая часть информации, которую я нашел до сих пор, была связана с тем, что есть и что с ней связано. Что я действительно хочу знать, так это то, как функция возвращает сразу когда асинхронный с обратным вызовом и одним поточным. [здесь] s (http://nathansjslessons.appspot.com/lesson?id=1085), что я получил эту информацию откак асинхронно работает под капотом ..?
The function **returns immediately** before the file is read and schedules the read to happen
sometime in the future. Once the data is ready, the callback function is called on the
data.
Вот пример того, как вы будете использовать обычный блокировка чтения функцию, чтобы получить содержимое файла вар ReadFile = функция () {
var data;
data = read('file.txt');
dosomething('contect' + data);
}
Вот тот же пример, использующий функцию асинхронного readAsync.
var readFileAsynch = function() {
var func = function (x) {
// i can do something with data
dosomthing('content'+data);
}
**readAsynch('file.txt',func);**
dosomemorestuff();
};
от того, что я знаю, если вы используете другой поток, чем основной поток, чем я думал, что это способ сделать асинхронный, то если у вас есть только одна нить как JavaScript, то как бы Асинхронный действительно работать ..?
И, когда дело доходит до диспетчерских очередей в объективе c, правильно ли думать, что очередь - это просто массив указателей на блоки или функции, и поток отвечает за управление этой очередью в приложении ..?
Мне очень жаль, что мой вопрос очень размыт, но я тоже ... надеюсь, что кто-нибудь может предоставить какой-то исходный код или реализацию, которые я могу прочитать, чтобы понять, что происходит на самом деле. Я устал от того, что просто читаю какую-то вещь, как «использование потока очень дорого» ... но каким образом ..? Или, я не должен знать об этом ..?
Редактировать: так как readAsynch ('file.txt', func); действуют иначе, чем другие функции, так что они называются asynch ..? и как получилось, что он может выполнить dosomemorestuff сразу же, не дожидаясь функции readAsynch прямо выше, если только (я думаю), когда вы вызываете readAsynch, это делается другим потоком ..?
Javascript однопоточный, но ваш браузер не. Ваш браузер использует другой поток, чтобы дождаться ответа с сервера, а затем прервет поток javascript, когда он получит ответ, чтобы можно было обработать любые обратные вызовы. –
@thefourtheye Я не уверен, если я использую несоответствующее слово. что я подразумевал при реализации, было то, что если есть функция, которая действует как асинхронная, поэтому я могу просто вызвать ее, не дожидаясь ее, выполняет следующие утверждения.так как такая функция реализует асинхронное поведение ..? –