เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Asynchronous (เบซเบผเบฑเบเบชเบนเบ”เป€เบ•เบฑเบก)

เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Asynchronous (เบซเบผเบฑเบเบชเบนเบ”เป€เบ•เบฑเบก)

เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰, เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Asynchronous เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบšเปเปˆเบซเบ™เป‰เบญเบเบเปˆเบงเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ‚เบฐเบซเบ™เบฒเบ™เบ„เบฅเบฒเบชเบชเบดเบ, เปเบฅเบฐเปƒเบ™เป‚เบฅเบเบ‚เบญเบ‡ JavaSript, เบ—เบฑเบ‡เปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเปเบฅเบฐเปƒเบ™ Node.js, เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเป€เบ•เบฑเบเบ™เบดเบเบ‚เบญเบ‡เบกเบฑเบ™เป„เบ”เป‰เป€เบญเบปเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบˆเบธเบ”เบชเบนเบ™เบเบฒเบ‡เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ—เบฑเบ”เบชเบฐเบ™เบฐเบ‚เบญเบ‡เป‚เบฅเบเบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบญเบปเบฒเบกเบฒเปƒเบซเป‰เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบ›เบฑเบ™เบซเบผเบฑเบเบชเบนเบ”เบฅเบงเบกเปเบฅเบฐเบ„เบปเบšเบ–เป‰เบงเบ™เบชเบปเบกเบšเบนเบ™เบ—เบตเปˆเบชเบธเบ”เบเบฑเบšเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก asynchronous, เบญเบฐเปเบ”เบšเป€เบ•เบตเบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เปเบฅเบฐเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบŠเปˆเบงเบ. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ 23 เบšเบปเบ”เบšเบฑเบ™เบเบฒเบ, 3 เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เปเบฅเบฐ 28 repositories เบ—เบตเปˆเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบฅเบฐเบซเบฑเบ”เบซเบผเบฒเบเปƒเบ™ github. เบ—เบฑเบ‡เปเบปเบ”เบ›เบฐเบกเบฒเบ™ 17 เบŠเบปเปˆเบงเป‚เบกเบ‡เบ‚เบญเบ‡เบงเบดเบ”เบตเป‚เบญ: เบฅเบดเป‰เบ‡เบซเบฒเบฅเบฒเบเบเบฒเบ™เบซเบผเบดเป‰เบ™.

เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบชเปเบฒเบฅเบฑเบšเปเบœเบ™เบงเบฒเบ”

เปเบœเบ™เบงเบฒเบ” (เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡) เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš asynchrony. เบ•เบฑเบ™เบชเบตเบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก asynchronous, เปเบฅเบฐ b/w เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ‚เบฐเบซเบ™เบฒเบ™ (semaphores, mutexes, barriers, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เปเบฅเบฐ Petri nets, เป€เบŠเบดเปˆเบ‡, เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก asynchronous เปเบฅเบฐเบ•เบปเบงเปเบšเบšเบ™เบฑเบเบชเบฐเปเบ”เบ‡, เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ‚เบฐเบซเบ™เบฒเบ™ (เบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™ เปƒเบซเป‰เบขเบนเปˆเปƒเบ™เปเบœเบ™เบงเบฒเบ”เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก asynchronous เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบเบงเปˆเบฒ). เบฎเบนเบšเปเบšเบšเบ™เบฑเบเบชเบฐเปเบ”เบ‡เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก asynchronous เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบฅเบฐเบ„เบญเบ™เบ—เบตเปˆเบšเปเปˆเบกเบต multithreading เบเบฑเบ‡เบกเบตเบชเบดเบ”เบ—เบตเปˆเบˆเบฐเบกเบตเบขเบนเปˆเปเบฅเบฐเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ” asynchronous. เป€เบชเบฑเป‰เบ™เบˆเบธเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบซเบ”เบเบฒเบ™ เปเบฅเบฐเบ„เบดเบงเบžเป‰เบญเบกเป†เบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป‚เบ—เบเบฑเบšเบเป‰เบญเบ™เบเบฒเบ™เบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เป€เบญเบตเป‰เบ™เบ„เบทเบ™, เปเบ•เปˆเบเบฑเบ‡เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เปƒเบซเบกเปˆเบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ™เบฐเบžเบฒเบš.

เบซเบปเบงเบ‚เปเป‰เบšเบฑเบ™เบเบฒเบ

1. เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Asynchronous (เบžเบฒเบšเบฅเบงเบก)
2. Timers, timeouts เปเบฅเบฐ EventEmitter
3. เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Asynchronous เป‚เบ”เบเปƒเบŠเป‰ callbacks
4. เบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบดเบ”เบเบฑเป‰เบ™ iteration asynchronous
5. Asynchrony เบเบฑเบš async.js library
6. Asynchrony เบชเบธเบ”เบชเบฑเบ™เบเบฒ
7. เบŸเบฑเบ‡เบŠเบฑเบ™ Asynchronous เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”
8. เบญเบฐเปเบ”เบšเป€เบ•เบต asynchronous: promisify, callbackify, asyncify
9. เบ•เบปเบงเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Asynchronous
10. เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™เบ„เปเบฒเบชเบฑเบ™เบเบฒ
11. เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡ stacktrace asynchronous
12. เป€เบ„เบทเปˆเบญเบ‡เบเปเบฒเป€เบ™เบตเบ”เป„เบŸเบŸเป‰เบฒเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบ›เบฑเปˆเบ™เป„เบŸ asynchronous
13. Iterators เปเบฅเบฐ asynchronous iterators
14. เบเบฒเบ™เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ asynchronous
15. เบญเบปเบ‡เบ›เบฐเบเบญเบšเบŸเบฑเบ‡เบŠเบฑเบ™ Asynchronous
16. เบซเบผเบฑเบ‡ เบˆเบฒเบ เบ™เบฑเป‰เบ™ เปเบฅเบฐ lightweight เบฅเป เบ–เป‰เบฒ
17. เบ„เบดเบงเบšเปเปˆเบŠเบดเป‰เบ‡เบžเป‰เบญเบกเบเบฑเบ™
18. Pattern open constructor (Revealing Constructor)
19. Future: Asynchrony on the stateless futures
20. Deferred: Asynchrony เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ‚เบญเบ‡เบฅเบฑเบ”
21. เบ™เบฑเบเบชเบฐเปเบ”เบ‡เบ•เบปเบงเปเบšเบš
22. Pattern Observer (Observer + Observable)
23. Asynchrony เปƒเบ™ RxJS เปเบฅเบฐเบเบฐเปเบชเป€เบซเบ”เบเบฒเบ™

เบžเบฒเบเปƒเบ•เป‰เปเบ•เปˆเบฅเบฐเบงเบดเบ”เบตเป‚เบญเบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš repositories เบ—เบตเปˆเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™เบงเบดเบ”เบตเป‚เบญ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบซเป‰เบเบฑเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™ abstraction เบ‚เบญเบ‡ asynchrony. เบšเปเปˆเบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบˆเบฐ asynchrony, เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบเปเบฅเบฐเบ™เบต, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเป€เบญเบปเบฒเบงเบดเบ—เบตเบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ—เปเบฒเบกเบฐเบŠเบฒเบ”เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบชเบฐเป€เบžเบฒเบฐเบ™เบตเป‰. เปเบ™เปˆเบ™เบญเบ™, เบซเบผเบฑเบเบชเบนเบ”เบ™เบตเป‰เบˆเบฐเบ–เบทเบเป€เบชเบตเบกเปเบฅเบฐเบ‚เป‰เบญเบเบ‚เปเปƒเบซเป‰เบ—เบธเบเบ„เบปเบ™เปเบ™เบฐเบ™เปเบฒเบซเบปเบงเบ‚เปเป‰เปƒเบซเบกเปˆเปเบฅเบฐเบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบฅเบฐเบซเบฑเบ”. เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบซเบผเบฑเบเบชเบนเบ”เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡ abstractions asynchrony เบˆเบฒเบเบžเบฒเบเปƒเบ™, เปเบฅเบฐเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™. เป€เบเบทเบญเบšเบ—เบธเบเบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบญเบปเบฒเบกเบฒเบˆเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เปเบ•เปˆเป„เบ”เป‰เบ–เบทเบเบกเบญเบšเปƒเบซเป‰เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบฅเบฐเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบงเบดเป€เบ„เบฒเบฐเป€เบ›เบฑเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™.

เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšเบเบฐเบฅเบธเบ™เบฒ.

เบกเบตเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เปเบ™เบงเปƒเบ”เบเปˆเบฝเบงเบเบฑเบšเบซเบผเบฑเบเบชเบนเบ”?

  • เบ‚เป‰เบญเบเบˆเบฐเป€เบšเบดเปˆเบ‡เบซเบผเบฑเบเบชเบนเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”

  • เบ‚เป‰เบญเบเบˆเบฐเป€เบšเบดเปˆเบ‡เปเบšเบšเป€เบฅเบทเบญเบ

  • เบงเบดเบ—เบตเบเบฒเบ™เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ

  • เบ‚เป‰เบญเบเบˆเบฐเบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™เบซเบผเบฑเบเบชเบนเบ”

  • เบ‚เป‰เบญเบเบšเปเปˆเบชเบปเบ™เปƒเบˆเปƒเบ™ asynchrony

เบœเบนเป‰เปƒเบŠเป‰ 8 เบ„เบปเบ™เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 1 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™