{"id":34273,"date":"2019-10-31T21:57:22","date_gmt":"2019-10-31T18:57:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/asinhronnoe-programmirovanie-polnyj-kurs\/"},"modified":"2019-10-31T21:57:22","modified_gmt":"2019-10-31T18:57:22","slug":"asinhronnoe-programmirovanie-polnyj-kurs","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/news\/asinhronnoe-programmirovanie-polnyj-kurs","title":{"rendered":"Asynchrone programmering (volledige cursus)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/playlist?list=PLHhi8ymDMrQZ0MpTsmi54OkjTbo0cjU1T\"><img decoding=\"async\" alt=\"Asynchrone programmering (volledige cursus)\" src=\"\/wp-content\/uploads\/2019\/05\/05e2e5ca44a35d173d006faafd6d18c0.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Asynchroon programmeren is de laatste tijd net zo goed ontwikkeld als klassiek parallel programmeren, en in de wereld van JavaScript, zowel in browsers als in Node.js, heeft het begrijpen van de technieken ervan een centrale plaats ingenomen in de denkwijze van ontwikkelaars. Ik bied u een samenhangende en meest complete cursus aan met uitleg over alle breed toepasbare methoden van asynchroon programmeren, adapters ertussen en ondersteunende lagen. Momenteel bestaat het uit 23 lezingen, 3 presentaties en 28 repositories met tal van codevoorbeelden op GitHub. In totaal ongeveer 17 uur video: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/playlist?list=PLHhi8ymDMrQZ0MpTsmi54OkjTbo0cjU1T\">link naar afspeellijst<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4 id=\"poyasneniya-k-sheme\">Uitleg bij het schema<\/h4>\n<p><\/p>\n<p>In het schema (boven) worden de verbindingen tussen verschillende manieren van omgaan met asynchroniciteit getoond. De gekleurde blokken zijn gerelateerd aan asynchroon programmeren, terwijl zwart-wit de methoden van parallel programmeren weergeven (semaphores, mutexes, barri\u00e8res, enz.) en Petri-netten, die, net als asynchroon programmeren en het actor-model, verschillende benaderingen zijn voor het implementeren van parallelle berekeningen (ze zijn in het schema opgenomen om de plaats van asynchroon programmeren nauwkeuriger te bepalen). Het actor-model is gerelateerd aan asynchroon programmeren omdat de implementatie van actoren zonder multithreading ook bestaansrecht heeft en dient voor de structurering van asynchrone code. De puntlijntjes verbinden evenementen en de concurrent queue met callbacks omdat deze abstracties gebaseerd zijn op callbacks, maar toch kwalitatief nieuwe benaderingen vormen.<\/p>\n<p><\/p>\n<h4 id=\"temy-lekciy\">Onderwerpen van de lezingen<\/h4>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/hY6Z6qNYzmc\">1. Asynchroon programmeren (overzicht)<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/LK2jveAnRNg\">2. Timers, timeouts en EventEmitter<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/z8Hg6zgi3yQ\">3. Asynchroon programmeren met callbacks<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/wYA2cIRYLoA\">4. Non-blocking asynchrone iteratie<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/XQ94wQc-erU\">5. \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0441 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 async.js<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/RMl4r6s1Y8M\">6. Asynchroniciteit met promises<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/Jdf_tZuJbHI\">7. Asynchrone functies en foutafhandeling<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/76k6_YkYRmU\">8. Asynchrone adapters: promisify, callbackify, asyncify<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/tgodt1JL6II\">9. Asynchrone dataverzamelaars<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/1Ml5NE2fsZ8\">10. Onbehandelde fouten in promises<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/pfiHTx3j87Y\">11. Probleem van asynchrone stacktrace<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/kvNm9D32s8s\">12. Generators en asynchrone generators<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/rBGFlWpVpGs\">13. Iterators en asynchrone iterators<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/T8fXlnqI4Ws\">14. Annuleren van asynchrone operaties<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/3ZCrMlMpOrM\">15. Asynchrone samenstelling van functies<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/DXp__1VNIvI\">16. Thenable en lichte await<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/Lg46AH8wFvg\">17. Concurrente asynchrone queue<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/leR5sXRkuJI\">18. Pattern Revealing Constructor<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/22ONv3AGXdk\">19. Future: Asynchroniciteit met toekomst zonder status<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/a2fVA1o-ovM\">20. Deferred: Asynchroniciteit met deferred met status<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/xp5MVKEqxY4\">21. Actor Model<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/_bFXuLcXoXg\">22. Observer Pattern (Observer + Observable)<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/0kcpMAl-wfE\">23. Asynchroniciteit met RxJS en evenementstromen<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Onder elke video vindt u links naar de repositories met voorbeeldcode die in de video worden behandeld. Ik heb geprobeerd aan te tonen dat het niet nodig is om alles te reduceren tot \u00e9\u00e9n abstractie van asynchroniciteit. Er bestaat niet \u00e9\u00e9n universele benadering voor asynchroniciteit; voor elke situatie kunnen de juiste methoden worden gekozen die het mogelijk maken om code natuurlijker te schrijven voor die specifieke taak. Uiteraard zal deze cursus worden aangevuld en vraag ik iedereen om nieuwe onderwerpen voor te stellen en bij te dragen aan de voorbeeldcode. Het belangrijkste doel van de cursus is om te laten zien hoe je abstracties van asynchroniciteit van binnenuit opbouwt, en niet alleen om te leren hoe ze gebruikt moeten worden. Bijna alle abstracties komen niet uit bibliotheken, maar worden gegeven in hun meest eenvoudige implementatie, waarbij hun werking stap voor stap wordt besproken.<\/p>\n<p class=\"for_users_only_msg\">Alleen geregistreerde gebruikers kunnen deelnemen aan de enqu\u00eate. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Log in<\/a><\/noindex>, alstublieft.<\/p>\n<h2 class=\"default-block__polling-title\">Wat is uw mening over de cursus?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ik zal de hele cursus bekijken<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ik zal selectief bekijken<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ik heb genoeg aan \u00e9\u00e9n benadering<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ik wil bijdragen aan de cursus<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ik ben niet ge\u00efnteresseerd in asynchroniciteit<\/p>\n<\/li>\n<\/ul>\n<p>    8 gebruikers hebben gestemd. 1 gebruiker onthield zich.<br \/>\n<br \/>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452974\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0442\u0430\u043b\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u044b\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u0447\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430 \u0432 \u043c\u0438\u0440\u0435 JavaSript, \u043a\u0430\u043a \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445, \u0442\u0430\u043a \u0438 \u0432 Node.js, \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0435\u0433\u043e \u043f\u0440\u0438\u0435\u043c\u043e\u0432 \u0437\u0430\u043d\u044f\u043b\u043e \u043e\u0434\u043d\u043e \u0438\u0437 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0438\u0440\u043e\u0432\u043e\u0437\u0437\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u044b\u0439 \u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u0443\u0440\u0441 \u0441 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u0448\u0438\u0440\u043e\u043a\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25850,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34273","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/news\/asinhronnoe-programmirovanie-polnyj-kurs\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u0443\u0440\u0441) | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/news\/asinhronnoe-programmirovanie-polnyj-kurs\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:57:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:57:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Asynchroon programmeren (complete cursus) | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/asinhronnoe-programmirovanie-polnyj-kurs","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u0443\u0440\u0441) | ProHoster","og:url":"https:\/\/prohoster.info\/nl\/blog\/news\/asinhronnoe-programmirovanie-polnyj-kurs","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:57:22+00:00","article:modified_time":"2019-10-31T18:57:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34273","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 18:33:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:25:30","updated":"2026-01-21 18:33:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/34273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=34273"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/34273\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/25850"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=34273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=34273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=34273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}