Asynchronous Programming (Complete Course)

Asynchronous Programming (Complete Course)

Asynchronous programming has recently become as developed a field as classical parallel programming, and in the world of JavaScript, both in browsers and in Node.js, understanding its techniques has taken a central place in shaping developers' perspectives. I present to you a comprehensive and most complete course explaining all widely used methods of asynchronous programming, the adapters between them, and supplementary components. It currently consists of 23 lectures, 3 presentations, and 28 repositories with numerous code examples on GitHub. In total, about 17 hours of video: link to playlist.

Explanations for the diagram

The diagram (above) shows the relationships between different ways of handling asynchronous operations. The colored blocks correspond to asynchronous programming, while the black-and-white methods highlight parallel programming (semaphores, mutexes, barriers, etc.) and Petri nets, which, like asynchronous programming and the actor model, represent different approaches to implementing parallel computations (they are shown in the diagram only to more accurately pinpoint the place of asynchronous programming). The actor model relates to asynchronous programming because the implementation of actors without multithreading is also valid and serves to structure asynchronous code. The dashed lines connect events and the concurrent queue with callbacks because these abstractions are based on callbacks but still form qualitatively new approaches.

Topics of Lectures

1. Asynchronous Programming (Overview)
2. Timers, Timeouts, and EventEmitter
3. Asynchronous Programming with Callbacks
4. Non-blocking Asynchronous Iteration
5. Асинхронность с библиотекой async.js
6. Asynchronous Promises
7. Asynchronous Functions and Error Handling
8. Asynchronous Adapters: Promisify, Callbackify, Asyncify
9. Asynchronous Data Collectors
10. Unhandled Errors in Promises
11. The Problem of Asynchronous Stack Traces
12. Generators and Asynchronous Generators
13. Iterators and Asynchronous Iterators
14. Canceling Asynchronous Operations
15. Asynchronous Function Composition
16. Thenable and Lightweight Await
17. Concurrent Asynchronous Queue
18. Revealing Constructor Pattern
19. Future: Asynchronous Programming with Stateless Futures
20. Deferred: Asynchronous Operations with State Differences
21. Actor Model
22. Observer Pattern (Observer + Observable)
23. Asynchronous Operations with RxJS and Event Streams

Below each video, there are links to repositories with code examples discussed in the videos. I aimed to show that it's not necessary to reduce everything to a single abstraction of asynchronicity. There is no universal approach to asynchronicity, and for each case, methods can be selected that allow for more natural coding for that specific task. Of course, this course will be continually updated, and I encourage everyone to suggest new topics and contribute to code examples. The main goal of the course is to show how to build abstractions of asynchronicity from the ground up, rather than just teaching how to use them. Virtually all abstractions are not derived from libraries but are provided in their simplest implementation, with a step-by-step explanation of how they function.

Only registered users can participate in the survey. Please log in, please.

What is your opinion about the course?

  • I will watch the entire course

  • I will watch selectively

  • One approach is enough for me

  • I will contribute to the course

  • I am not interested in asynchronicity

8 users voted. 1 user abstained.

Source: habr.com

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster