"Eşzamansız olay" tanımının anlaşılması kolay mı? [kapalı]


88

Bu terimle çok karşılaştım ve Google'da arama yaptıktan sonra bile tam olarak ne anlama geldiğini hala anlayamıyorum. Birinin sağlayabileceği eşzamansız bir olayın ne olduğuna dair anlaşılması kolay (ideal olarak örneklerle) tanım var mı?

Teşekkürler!

Yanıtlar:


422

Programlama dışı örnek:

Senkron Akşam yemeği için pizza istiyorsun ve donmuş türün dışındasın. Bu yüzden loncanızı üzen WOW oynamayı bırakmalısınız. Mutfağa gidin, hamur yapın, üzerini sosla örtün, peyniri ekleyin ve en sevdiğiniz pastırma sosunu sıkın. Vaktinizin 20 dakikasını fırında 10 dakika daha pizza yaparak geçirdiniz. Zamanlayıcı bip sesi çıkarır ve sıcak pastayı çıkarırsınız. Bilgisayarınızın önüne oturabilir, pizzayı yiyebilir ve baskına devam edebilirsiniz.

Eşzamansız WOW oynarken akşam yemeğinde pizza istiyorsunuz. 5. monitörünüzde bir tarayıcı penceresi açarsınız. Pizza web sitesini yükleyin ve fazladan peynirli pastırmalı pizza sipariş edin ve yanında pastırma yağı sarımsak sosu ekleyin. Baskına geri dönersiniz ve 20 dakika sonra kapı zili çalar. Pizzayı al. Bilgisayarınızın önüne oturun, pizzayı yiyin ve baskına devam edin.

Öyleyse fark nedir? 20-30 dakikalık değerli WOW zamanını boşa harcamanın bir yolu, diğer yolu 20 $ artı bahşişi boşa harcamaktır.


53
Bunu çok komik bulduğum için üzülüyorum.
Denis Hoctor

3
Uzun zamandır gördüğüm en iyi programlama dışı açıklama olabileceğini kabul etmeliyim! harika örnek!
Iban Dominguez Noda

Anlıyorum ve bu cevap anlamama yardımcı oluyor, ama şimdi pizza istiyorum = / ve istek pizza alana kadar devam etmeyecek -_-
Maduro

"Programlama dışı örnekleri" seviyorum !!
Cynthia Sanchez

@epascarello Komik tarafı gerçekten iyi çalışıyor !!! Bahsetmiyorum bile, anlaşılması açık. Bir proje için sana
Omar,

19

Sayfanız, internette bir yerde, sunucudan bir istemci tarayıcısına teslim edilir. Tarayıcı sayfayı bir ekrana çizdi ve birisi - veya bir şey - ona bakıyor. Bu bir bekleme oyunu. Gözler ileri geri kayar, şu veya bu detayı hızlı zıplamalarla alır, ara sıra ekrandan uzağa fırlayarak çevredeki dikkat dağıtıcı unsurları araştırır. Saat işliyor. Kullanıcı hareketsiz dururken, eli bir farenin üzerine gevşekçe örtülürken, boynu aşağı doğru eğilirken ve gözlerini sayfanızın sunduğu davetkar bir şeye giderek daha fazla niyet ederken, sayfa yumuşak ve pasif bir şekilde parlıyor.

Aniden, hiçbir uyarı olmadan, farenin üzerindeki el hafifçe sertleşirken ve masanın pürüzlü yüzeyindeki küçük plastik çıkıntıyı dürtmeye başladığında imleç hareket etmeye başlar. Fare hareket ettikçe, ekrandaki vekili yakın bir taklitle hareket eder, sayfanızın içeriğindeki ilginç görüntüleri ve esprili açıklamaları otlatır. Sonunda bir karar verilir, hareket durur, bir veya iki kas hafifçe kasılır ve ısrarcı bir parmakla fare düğmesine basılır. Faredeki mikro anahtar, elektronik bir dürtüyü tetikler ve birdenbire, tarayıcı ne olduğunun farkına varır: bir fare tıklaması.

Bütün bunlara rağmen, kullanıcının sayfaya bakarken yaptıklarıyla ilgili her şey, tarayıcı için, web sayfanızdaki herhangi bir istemci koduna, sunucularınızda bulunan herhangi bir şeye tamamen öngörülemeyen bir şekilde gerçekleşmiştir. İnsan eylemleri arasında bilinebilir bir "bekleme süresi" yoktu. Bu nedenle, kullanıcının bilgisayarına bağlanan ekipman tarafından iletilen eylemler, tahmin edilebilir bir saate göre değil , gerçekleştiğinde gerçekleşti - yani, eşzamansız olarak gerçekleşti .


3
+1 Güzel hikaye :) çok davetkar ... faremi hareket ettirip "yukarı oy" okunu tıklamamı sağladı. Ve işte yine eşzamansız olay ....
Felix Kling

1
Harika bir örnek, bir tarayıcı etkinliği seçimi tek kelimeyle harika!
sjsam

18

Bir röportajın sonunu düşünün ve adam "Bizi arama, seni arayacağız" diyor. Eşzamansız bir olayın özü budur.

Normalde işlevleri tanımlarsınız ve işlevleri açıkça çağırırsınız. Programınızın 1. satırdan sonra 2. satırdan başladığı bir yapısı vardır ve bazı koşullu kodlar ve yinelemeler, çağırma işlevleri vb. Dışında basit, astarlı, senkronize bir yapı vardır.

Ancak bazı durumlarda, programın doğrudan kontrolü dışındaki olaylar tarafından tetiklenen eylemleriniz vardır, örneğin bir kullanıcı arabirimi olayları (kullanıcı fareyi tıklar) veya bir ağ olayı (biri bağlanmaya çalışır) gibi programın dışından gelen şeyler sunucunuz). Kodunuz bu olayları doğrudan oluşturmaz. Programınızın dışında, genellikle işletim sistemi tarafından kullanıcı arabirimi cihazlarının ve diğer sistemlerin izlenmesine dayalı olarak oluşturulurlar. Bunlara eşzamansız olaylar denir.

Unutma, "Bizi arama, biz seni arayacağız"


12

"Programlamada, eşzamansız olaylar, ana program akışından bağımsız olarak gerçekleşen olaylardır. Eşzamansız eylemler, ana program akışının işlemeye devam etmesine olanak tanıyan, engellemesiz bir düzende yürütülen eylemlerdir."

"Ajax ile web uygulamaları, mevcut sayfanın görüntüsüne ve davranışına müdahale etmeden arka planda eşzamansız olarak sunucudan veri alabilir."

SO'da Düzenle ve Kaydet'i tıkladığınızda, eşzamansız olarak gerçekleşir.


12

Zaman uyumsuz bir olay, uygulamanın ana iş parçacığının dışında çalışan bir olaydır.

Anlamanın en iyi yolu, eşzamanlı olarak çalışan olaylarla karşılaştırmaktır. En tipik örnek, bir web sayfası yüklemektir.

Bu sayfaya gittiğinizde, bir bağlantıya tıkladınız ve sayfanın yüklenmesini beklediniz ve yükleme tamamlanana kadar bu sayfayla etkileşimde bulunamadınız veya bu sayfayı kullanamadınız. Bunun aksine, bu sayfada bazı kullanıcı eylemleriyle ilişkili bir AJAX olayı (Eşzamansız JavaScript ve XML olayı) olacaksa, bu sayfa başka bir kaynaktan eşzamansız olarak - devam eden diğer eylemlerle paralel (teorik olarak) bazı verileri yükleyecektir.

İki Senkron Olaylı Örnek (A ve B): İlk A bir şey yapar. A bittiğinde B bir şeyler yapar.

İki Asenkron Olaylı Örnek (A ve B): Hem A hem de B aynı anda bir şeyler yapar ve hiçbir olay diğerini beklemez.


7

JavaScript'te eşzamansız işlemin bir örneğini burada bulabilirsiniz (javascript konsolunuzun açık olması gerekir)

console.log('One!');
setTimeout(function(){console.log('Two!');},0);
//Doesn't wait
console.log('Three!');};

//OUTPUT:
//One!
//Three!
//Two!

Çağrısı, console.log('Two!')ondan sonra gerçekleşen kodun geri kalanı engellenmeden yürütülecektir.

Gerçek bir senaryoda, setTimeout'u bir web sayfasındaki bir düğmeyi tıklatan biriyle değiştirin. Düğme tıklamasına verilen yanıt, eninde sonunda, sayfa oluşturma gibi diğer kod yürütmeyi engellemeden gerçekleşir.


5

Basitçe söylemek gerekirse, bilinmeyen bir süre sonra ortaya çıkan bir şey anlamına gelir, bu nedenle anında sonuç beklemeyin.

Örneğin, "Anne, beş dolarım olabilir mi?"

Elimi para için dışarı çıkarmak, bana para vererek (eşzamanlı) hemen yanıt vermesini beklememdir.

Gerçekçi bir şekilde bana bir veya iki dakika bakacak ve sonra istediği zaman (eşzamansız) yanıt vermeye karar verecek.


2

İki farklı olay birbirinden ayrı gerçekleştiğinde, yapamazsınız

task1
task2

task1gerçekten bittiğini kontrol etmeden .


1

Eşzamansız olaylar, gelecekte ne zaman meydana geleceğini bilmediğimiz olaylardır; örneğin, bazı dosyalar için sunucu talep edildiğinde, isteğimizi ne zaman yerine getireceğini bilmediğimiz veya kullanıcının ne zaman gerçekleştireceğini bilmediğimiz UI olaylarıdır. bir düğmeyi veya başka bir UI öğesini tıklayın, ancak buna rağmen sayfada veya uygulamada başka şeyler oluyor, sunucudan bir dosya gelmeyene veya bazı olaylar gerçekleşene kadar sayfanın tüm kullanıcı arayüzünü grileştirdiğini söyleyen hiçbir şeyi engellemez. bu eşzamansız olayların gücüdür, sadece bağımsız olaylar deyin


0

Senkron Vs. Eşzamansız Olaylar

Olay gerçekleştiğinde bazı olay işleyicileri hemen çağrılır. Bunlara "eşzamanlı" olaylar denir. Bir örnek DocumentNew'dir. Kullanıcı yeni bir belge oluşturur oluşturmaz çağrılır.

Ancak bazı olaylar, olay meydana geldikten kısa bir süre sonra, genellikle kısa bir boşta kalma süresinden sonra çağrılır. Bunlar 'eşzamansız' olaylar olarak adlandırılır. Zaman uyumsuzdurlar çünkü eğer kullanıcı tarafından yazılan bir makro olayın meydana geldiği tam zamanda çağrılacaksa Source Insight'ı kararsız hale getirecektir.


0

Kod eşzamanlıysa (veya eşzamanlıysa), bu, her kod parçasının sırayla, sırayla çalıştığı ve bir sonraki kod parçasının önceki tamamlanana kadar çalışamayacağı anlamına gelir. Çoğu kod genellikle eşzamanlıdır.

Kod eşzamansızsa (veya eşzamansızsa), bu, kodun diğer kodlardan ayrı ve bağımsız olarak çalışabileceği anlamına gelir. Bir grup senkronizasyon kodunun ortasında eşzamansız kod varsa, bu belirli soru bağlamında, zaman uyumsuz kod, senkronizasyon kodunun neresine koyduğunuza bakılmaksızın, yalnızca olayı tetiklendiğinde çalışır. Tamamen ayrı ve eşitleme kodundan bağımsızdır ve yalnızca önceki kod parçası çalıştırıldığında değil, olayı ne zaman isterse çalışır. Bunun bazı örnekleri, bir dosya başarıyla kaydedildikten sonra, bir web isteği gönderildikten sonra, kullanıcı bir düğmeyi tıkladığında veya bir görüntü yüklendikten sonra zamanlanmış bir aralıkta çalışan kod içindir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.