ПредишенСледващото

Основно описание на асинхронния код

Очаква се, че ще видим в конзолата "А" на "б", а след това, след като около 500 милисекунди - "в", "г" и "д". Аз използвам термина "около", защото в действителност функция setTimeout непредсказуемо. Дори и в специфиацията HTML5: "По този начин, API не гарантира, че таймерът ще се проведе точно на възможността за програмиране на забавяне поради натоварването на процесора и други проблеми, и други фактори.".

Интересното е, че времето за изчакване, няма да бъде толкова дълго, колкото останалата част от кода в блока няма да бъде изпълнен. Това означава, че ако един таймаут е зададен, тогава всяка функция се изпълнява в продължение на дълъг период от време, времето за изчакване, започва да брои, докато функцията е завършена. В действителност, асинхронни функции setTimeout и setInterval наредени на опашка, известен като цикъл от събития.

Asynchronous извличане на данни с помощта на JQuery $ .ajax метод е прост процес на различни браузъри, който крие реалния процес. Например:

Обикновено, но погрешно, се приема, че данните ще бъдат достъпни веднага след обаждането до $ .ajax. Но реалността е различна:

XMLHttpRequest обекта (XMLHTTP) искане и функцията за обратно извикване обработва събитие readystatechange обект. След това XMLHTTP изпълнява метод за изпращане. Докато работите XMLHTTP, readystatechange събитие се генерира всеки път, когато се променя собственост readyState. и само когато XMLHTTP финала получихме отговор от отдалечения хост ще работи функцията за обратно извикване.

Работа с асинхронния код

Много функции в node.js са асинхронни. Ето защо, често можете да намерите подобна ситуация:

И вие можете да намерите на този код от страна на клиента:

Вложените обратни повиквания може действително предизвика отвращение. Но има няколко решения на този кодиране стил. Проблемът не е език за програмиране, и как програмисти го използват.

наречени функции

Просто решение за почистване на функции за обратно извикване отломки - избягвайте да инвестират по-дълбоко от две нива. Вместо да преминава в анонимна функция функция аргумент обаждане използва име функция:

Освен async.js библиотека може да помогне за лечение на множество заявки / AJAX отговори. Например:

Този код се състои от две асинхронни функции, като всяка функция може да отнеме функция за обратно извикване "прави", което се извършва след приключване на асинхронен функция. Когато и двете функции връщат "Готово" ще бъде завършена, функцията за обратно извикване за паралелна обработка на информацията се извършва за всички грешки или на резултатите от двете асинхронни функции.

Promise (обещание)

Обещанието е, възникнали от събития събитие, връщането на единичната операция е завършена.

Има много библиотеки, които имат обещания шаблон. JQuery използва различно API обещания. Разсрочено обект се появи във версия 1.5, и jQuery.Deferred дизайнер се използва в функции, които връщат обещания. Функции, които връщат обещания за извършване на някаква асинхронни операции.

Тук е в състояние да изпълнява две функции асинхронни, се очаква да доведе и след това изпълнява и други функции с резултатите от първите две повиквания.

В този код, метод за геокодиране се извършва два пъти и се връща обещават. След това, на асинхронни извиквания на функции и решаване на вашия функция за обратно извикване. След това, когато изпитва, както решаване на повикването. извършва след това. връща резултат от първите две повиквания на географското кодиране. Резултатите се предават на getRoute. който също се завръща обещание. Накрая, когато обещанието на getRoute позволено писти обратно повикване doSomethingCoolWithDirections.

Събитията са друго решение за комуникация, когато асинхронни извика пълно изпълнение. Обектът може да бъде източник на замърсяване и да генерира едно събитие, което ще се хване другия обект. Този тип събития се нарича с шарката на наблюдение (модел наблюдател). backbone.js библиотека използва тази функция се използва Backbone.Events.

Има и други библиотеки, използващи модел, на събитията, като JQuery събитие емитер. EventEmitter. monologue.js и node.js има EventEmitter модул.

Никога не се връщайте обещания чрез публично API. Тази практика се свързва потребители API за обещания и усложнява модернизация на кода. Но комбинацията от обещания за вътрешно ползване и за външни събития API може да предизвика голяма отприщена и лесна за поддържане.

Този подход позволява на приложението да отговори на други области асинхронен функция за обратно извикване без пряка връзка с искането за генериране на обект. Тя се прави възможно да се актуализира няколко области на страницата, когато се оказва посока. В типичен конфигурация JQuery Аякс = п при смяна на посоката изисква обратна функция повикване е успешно. Този подход е трудно да се поддържа, както и използването на комуникациите значително улеснява актуализиране на няколко области на потребителския интерфейс.

Други приложения на шаблона с медиатора се използват, да се допълни библиотеки. PubSubJS и radio.js.

заключение

Основи на сграда асинхронни приложения

До получаване на информация от два канала (зрение и слух) на ефективността на обучението далеч по-добър живот от книги. А домашните задачи и онлайн тестове ще ви позволи да мисля постоянно в целевия език и веднага провери знанията си!

Основи на сграда асинхронни приложения

Основи на сграда асинхронни приложения

Ако искате по-дълго време, за да проучи как да се HTML, че ме има, за което трябва добра новина!

Основи на сграда асинхронни приложения

Ако вече сте се научили HTML и искат да се движи напред, следващата стъпка ще бъде да се проучи CSS технологията.

Основи на сграда асинхронни приложения

Ако искате да се разбере концепцията на домейн и хостинг, да научат как да се създаде база данни, да качвате файлове към уеб сайт чрез FTP сървър, създаване на поддомейни, да конфигурирате пощенските кутии за сайта и мониторинг на посещаемостта, този курс е разработен специално за вас!

Подкрепете проекта - споделете линка, благодаря!