Philip Roberts, çağrı yığını, olay döngüsü, görev sırası ve webapis gibi "dış" iş parçacıkları arasında net bir açıklama sağlayan tarayıcı olay döngüsü here açıklayan mükemmel bir iş yapar. Benim sorum bu düğüm olay döngüsündeki eşdeğer bileşenleri paralel yapmak ve temelde aynı şey denir. Yani, Node'un dosyasını ve web i/o kitaplıklarını kullanarak bir çağrı yaptığımda, bunlar geri çağrıları bir görev kuyruğunda kuyruğa alındığı yığın dışında gerçekleşen şeylerdir?Düğüm olay döngüsüne karşı krom tarayıcı olay döngüsü arasında önemli farklar var mı?
cevap
... Node'un dosyasını ve web i/o kitaplıklarını kullanarak bir çağrı yaptığımda, bunlar geri arama sıralarında bir görev kuyruğunda sıraya giren şeylerdir.
Evet, kesinlikle; Ajax ve asenkron olarak setTimeout
gibi eşzamansızdırlar. Çağrı yığınının dışında bir işlem yaparlar ve bu işlemi tamamladıklarında, olay döngüsü tarafından işlenecek sıraya bir olay eklerler.
Düğüm API'sı, bir tür eşzamansız no-op, setImmediate
sağlar. Bu işlev için, yukarıda bahsettiğim "bazı işlem", "hiçbir şey yapmama", ardından bir öğenin hemen olay kuyruğunun sonuna eklenmesidir.
olay sıranın önünde için bir etkinlik etkin doğrultusunda kesme ve diğer tüm sıraya olaylar bekletmek ekler daha güçlü process.nextTick
yoktur. Yinelemeli olarak çağrılırsa, bu diğer olayların (maxTickDepth
ulaşana kadar) uzun gecikmesine neden olabilir.
FWIW: Node.js ve Chrome **, ** aynı olay döngü uygulamasını kullanmıyor. Chrome/Chromium libevent'i kullanırken node.js libuv'u kullanır. – mscdex
@mscdex whaaaaat - bilmek güzel; ASAP'ı düzenleyeceğim. Elinizde herhangi bir referans varsa, onları koymak isterim (tabii ki kendime bakacağım, ve kendiminkinden birini bulabilirmiyim). – apsillers
[Burada] (https://chromium.googlesource.com/chromium/chromium/+/master/third_party/libevent/README.chromium), Chromium'un libevent içeren kaynak ağacıdır. [Burada] (https://github.com/joyent/node/blob/962e651476ce2035ce6e15eff5abd0f9c54e039c/src/node.cc#L3629-L3640) ana olay döngüsü için libuv kullanarak düğümdür. Her ikisi de v8'i ve bununla birlikte gelen her şeyi kullanırlar (her ne kadar Chrome, Chrome'dan çok farklı sürümler kullanabiliyor olsa da, Chrome düzenli olarak düzenli olarak güncellenir). – mscdex
- 1. Bir asyncio olay döngüsüne iş gönderme
- 2. Python işlem başına Asyncio olay döngüsü (aioprocessing, çoklu olay döngüleri)
- 3. Diğer modüllerdeki düğüm olay yayımlayıcısı
- 4. Çapraz Tarayıcı Olay nesnesi normalleştirme?
- 5. Tarayıcı olayı döngüsü nedir?
- 6. Bir olay döngüsü için gözlemlenebilir oluşturma
- 7. Aiohttp, Asyncio: RuntimeError: Olay döngüsü kapalı
- 8. FRP örneği, olay döngüsü veya iş parçacığı havuzuyla
- 9. Kulaklıkların takılı olmadığı bir olay var mı?
- 10. dte.SolutionBuild.StartupProjects değiştiğinde tetiklenen bir olay var mı?
- 11. Çalışma zamanı hatası: Olay döngüsü çalışıyor
- 12. Symfony2'nin: PrePersist/PreUpdate yaşam döngüsü olay
- 13. Bir programda iki asyncio olay döngüsü kullanmalı mıyım?
- 14. Olay işleyicisi var
- 15. WPF: Başlatılan ve Yüklenen olay arasında ne var?
- 16. std :: bind ve boost :: bind arasında önemli farklar görüyor muyum?
- 17. 2 WPF penceresi arasında olay gönderme
- 18. TTimer.OnTimer olay işleyicisi yeniden mı?
- 19. Bir olay kaynaklı kaynak kökünün olay kaynak havuzuna erişimi var mı?
- 20. Onclick düğmesi Parçada olay var
- 21. Log4J 1.2 ile Log4J 2.0 arasında büyük farklar var mı?
- 22. Olay işleme API'sı?
- 23. Olay dinleyicileri?
- 24. olay ve
- 25. Açısal 2 olay yayını
- 26. EventLog havuzuna (Serilog'da) Olay Kimliği ayarlamanın bir yolu var mı?
- 27. DOM, MSHTML IE8'de değiştirildiğinde değiştirilen bir olay var mı?
- 28. Delphi'de ActiveControl değiştiğinde patlayan bir olay var mı?
- 29. C'deki pencere olay günlüğüne yazmanın bir yolu var mı?
- 30. Tcl dizgisinin ana olay döngüsü tarafından engellenmesini engelle
Evet, temel fikir aynıdır. node.js, Chrome'un JS motorunu kullanıyor. – dandavis
@apsillers Anlaşıldı. Sadece farkında olmak için önemli bir kavramsal farklılık olup olmadığını belirlemeye çalışıyorum. – JohnGalt
Bir tarayıcıda birden fazla olay döngüsü olabilir (JS için, DOM için, vb.), Ancak kavram aynıdır, evet. – Bergi