Asenkron programlama, yazılım geliştirmede bir temeldir. Bu programlama konseptinin sadece yirmi birinci yüzyıldan beri var olduğuna inanmak zor. F# programlama dili, benzerleri arasında 2007'de asenkron programlamayı tanıtan ilk dildi.
C#, Python, JavaScript ve C++ gibi diğer diller, zaman uyumsuz programlama için kademeli olarak destek ekledi. Asıl soru, asenkron programlamanın uygulamalarınıza ne gibi bir değer kattığıdır.
Bu makale bu ve diğer soruları yanıtlıyor, böylece asenkron programlamanın nasıl kullanılacağı hakkında her şeyi öğreneceksiniz.
Senkron Programlama Nedir?
Senkron programlama, en temel haliyle bir programı ifade eder. Bu programlama modeli, bir programdaki veya komut dosyasındaki kod satırlarını sırayla işler. Bir programdaki her zaman ilk kod satırından başlar. Ardından, bir sonrakine geçmeden önce her bir kod satırının yürütülmesini tamamlamasını bekler.
Eşzamanlı model ayrıca aşağıdakiler gibi koşullu kod içerir: Eğer ve süre ifadeler. Koşullu bir ifadede yalnızca bazı kodlar yürütülecek olsa da, program sıralı olarak çalışmaya devam edecektir.
Senkron Program Örneği
const SyncCode = () => {
konsol.log("Bu, programdaki ilk satırdır")
konsol.log("Bu, programdaki ikinci satırdır")
konsol.log("Bu, programın son satırıdır")
}
EşitlemeKodu();
Yukarıdaki JavaScript programını çalıştırmak, konsolda aşağıdaki çıktıyı üretecektir:
Bu programdaki ilk satır
Bu programdaki ikinci satır
Bu programdaki son satırdır
Yukarıdaki çıktı tam olarak beklemeniz gereken şeydir. Program en baştan başlar ve bir sonrakine geçmeden önce bir kod satırının bitmesini bekler.
Asenkron Programlama Nedir?
Asenkron programlama, senkronize programlamanın tam tersidir. Asenkron programlama modeli, aynı anda birkaç kod satırını işler. Bir sonrakine geçmeden önce bir programdaki önceki kod satırının yürütülmesini tamamlamasını beklemez.
İlişkili: Senkron vs. Asenkron Programlama: Nasıl Farklılar?
Asenkron programlama, yürütme süresini yarıya indirerek daha hızlı bilgisayarlar oluşturabilir.
Asenkron Program Örneği
const AsyncCode = () => {
konsol.log("Bu, programdaki ilk satırdır")
setTimeout(() => {
konsol.log("Bu, programdaki ikinci satırdır")
}, 3000)
konsol.log("Bu, programın son satırıdır")
}
EşzamansızKod();
Yukarıdaki JavaScript Kodunu çalıştırmak, konsolunuzda aşağıdaki çıktıyı üretecektir:
Bu programdaki ilk satır
Bu programdaki son satırdır
Bu programdaki ikinci satır
Yukarıdaki konsol çıktısını, onu oluşturan asenkron programla karşılaştırırsanız, bariz bir tutarsızlık olduğunu göreceksiniz. çağrı kayıt Bu programdaki ikinci satırdır, bu programdaki son satırdır yazan satırdan önce gelir. Ancak konsol çıktısı bunu yansıtmaz.
JavaScript'in öncelikli olarak eşzamanlı olduğu göz önüne alındığında, yukarıdaki programdaki kod sırayla yürütüldü. Ancak JavaScript, aşağıdaki gibi özellikler aracılığıyla eşzamansız programlamayı destekler: setZaman aşımı() yöntem.
bu setZaman aşımı() yöntemi, iki bağımsız değişken alan eşzamansız bir JavaScript yöntemidir: bir işlev ve bir gecikme. Gecikme, işlevin yürütülmesini geciktiren bir zamanlayıcıdır (milisaniye cinsinden). Bu nedenle, yukarıdaki program, işlevi yürütmek için üç saniyeyi beklerken setZaman aşımı() yöntemi, kodda bir sonraki satıra geçer. Bu, üçüncü işlev çağrısının ikinciden önce yürütülmesine neden olur.
Asenkron JavaScript Teknolojileri
dışında setZaman aşımı() Yukarıda bahsedilen yöntemde, birkaç JavaScript teknolojisi asenkron programlama kullanır. Bu teknolojiler, daha hızlı engellemesiz uygulamalar geliştirmek için eşzamansız programlama modelini kullanır. Bu teknolojilerden bazıları şunlardır:
- jQuery Ajax'ı
- aksiyolar
- DüğümJS
İlişkili: Node.js Nedir? İşte Sunucu Tarafı JavaScript'in Nasıl Kullanılacağı
JavaScript ile Asenkron Programlar Oluşturma
Eşzamansız kodu işlemenin birkaç yolu vardır. Seçtiğiniz yöntem, geliştirmek istediğiniz uygulama türüne bağlı olmalıdır. Bu yöntemler geri arama işlevlerini, vaatleri ve zaman uyumsuz/beklemeyi içerir.
Geri Arama Fonksiyonları
Geri arama işlevinin iki önemli özelliği vardır. Diğer işlevler için parametre görevi görürler ve görevlerini yerine getirmek için dış olaylara güvenirler. bu setZaman aşımı() Yukarıdaki eşzamansız örnekte kullanılan yöntem bir geri çağırma işlevidir. Program, bir parametre olarak (geri çağırma işlevi) bir günlük işlevi iletir ve bunu yalnızca üç saniye sonra (olay) yürütür.
Geri arama işlevleri küçük programlar için harikadır, ancak uygulamalarınız büyüdükçe çok hızlı bir şekilde karmaşık hale gelebilirler. Bunun nedeni, geri arama işlevlerinin genellikle diğer geri arama işlevlerini çağırarak iç içe geçmiş bir geri aramalar zinciri oluşturmasıdır.
Sözleri Kullanmak
JavaScript, geri arama işlevlerinden sonra verilen sözler için destek ekledi. Daha büyük uygulamalar oluştururken iyi bir alternatiftirler. Bir söz, eşzamansız bir işlemden sonra ne olabileceğini temsil eder. Bu potansiyel sonuç iki biçimden birini alacaktır: çözüldü veya reddedilmiş. Ayrı bir işlev, bu sonuçların her birini ele alarak iç içe geçme ihtiyacını ortadan kaldırır (geri arama işlevi sorunu). Bunun yerine vaatler, kullanımı daha kolay olan zincir işlevlerini teşvik eder.
Her söz yeni bir sözle başlar Söz vermek ile anonim bir işlevi olan nesne çözmek ve reddetmek parametreler. Bu işlevde, eşzamansız işlem başarılı olursa bir çözüm veya aksi takdirde bir reddetme döndüren eşzamansız uygulamaya sahip olacaksınız.
bu sonra() zincir işlevi çözmek işlevi ve yakalamak() zincir işlevi reddetmek işlev. Bu nedenle, geri çağırma işlevlerinde olduğu gibi iç içe if ifadelerine gerek yoktur.
Söz Örneklerini Kullanma
const PromiseFunction = () =>{
yeni Söz ver((çöz, reddet) => {
setTimeout(() => {
çözmek ("bu eşzamansız işlem iyi yürütüldü")
}, 3000)
})
}
PromiseFunction().then((sonuç) => {
konsol.log("Başarı", sonuç)
}).catch((hata) => {
konsol.log("Hata", hata)
})
Yukarıdaki kod, konsolda aşağıdaki çıktıyı döndürür:
Bu eşzamansız işlemi başarılı bir şekilde yürüttü
Bunun nedeni, sözün geri dönmesidir. çözmek sonuçlarını aşağıdakilere ileten fonksiyon sonra() işlev. Söz geri dönerse reddetmek programın kullandığı işlev yakalamak yerine işlev.
Async/Await'i kullanma
Asenkron işlemlerle uğraşırken bir söz zinciri oluşturmak istemiyorsanız, async/await'i deneyebilirsiniz. Async/await, vaatlerden tamamen farklı bir eşzamansız araç değil, onları ele almanın farklı bir yolu. Zincirleme yöntemini kullanmadan vaatleri yerine getirir. Bu nedenle, vaatlerin eşzamansız işlemleri geri arama işlevlerinden daha iyi ele almasıyla aynı şekilde, zaman uyumsuz/beklemenin düz vaatlere göre faydaları vardır.
Her zaman uyumsuz/bekleme işlevinin iki temel özelliği vardır. ile başlarlar zaman uyumsuz anahtar kelime ve beklemek anahtar kelime, zaman uyumsuz bir işlemin sonucunu bekler.
Async/Bekleme Programı Örneği
const PromiseFunction = () =>{
yeni Söz ver((çöz, reddet) => {
setTimeout(() => {
çözmek ("bu eşzamansız işlem iyi yürütüldü")
}, 3000)
})
}const AsyncAwaitFunc = zaman uyumsuz () => {
const sonuç = bekle PromiseFunction();
konsol.log (sonuç);
}
AsyncAwaitFunc();
Yukarıdaki kod, konsolda aşağıdaki çıktıyı döndürür:
bu eşzamansız işlem iyi yürütüldü
Başlıca Çıkarımlar Nelerdir?
Bu makaleden almanız gereken birkaç önemli nokta var:
- Asenkron programlama, bir programın bekleme süresini azalttığı ve daha hızlı uygulamalar oluşturduğu için değerlidir.
- Bir geri arama işlevi senkron veya asenkron olabilir.
- Sözler, zaman uyumsuz işlemleri işlemek için geri arama işlevlerinden daha iyi bir yol sunar.
- Zaman uyumsuz/bekleme işlevleri, vaatleri zincir işlevlerini kullanmaktan daha iyi bir şekilde ele alır.
- Bir zaman uyumsuz/bekleme işlevi, zaman uyumsuz işlemleri, zaman uyumlu görünecek şekilde işleyerek anlaşılmasını kolaylaştırır.
- Ok işlevleri daha iyi kod yazmanıza yardımcı olur.
Web geliştirmede daha iyi olmak ister misiniz? JavaScript ES6'ya eklenen ok işlevleri, web uygulamaları için işlevler oluşturmanın iki yolunu sunar.
Sonrakini Oku
- Programlama
- Programlama
- JavaScript
Kadeisha Kean, Full-Stack Yazılım Geliştirici ve Teknik/Teknoloji Yazarıdır. En karmaşık teknolojik kavramların bazılarını basitleştirme konusunda belirgin bir yeteneğe sahiptir; herhangi bir teknoloji acemi tarafından kolayca anlaşılabilecek malzeme üretmek. Yazmak, ilginç yazılımlar geliştirmek ve dünyayı gezmek (belgeseller aracılığıyla) konusunda tutkulu.
Haber bültenimize abone ol
Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!
Abone olmak için buraya tıklayın