Promise Benzeri Örüntüler
Coroutine'ler ve geri çağırmalar kullanarak ertelenmiş/promise nesneleri uygulayın.
Promise Benzeri Örüntüler, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Vaat Nedir?
Bir vaat, gelecekte kullanılabilir olacak bir değeri temsil eder. beklemede, tamamlanmış (bir değerle) veya reddedilmiş (bir hatayla) olabilir.
Lua Vaat Tablosu
Durum, değer ve geri çağrı listeleri içeren bir tablo olarak minimal bir vaat uygulayın.
local function newPromise()
return {
state = "pending",
value = nil,
_resolve = {},
_reject = {},
}
endTamamlama ve Reddetme
Bir vaadi tamamlamak tüm tamamlanma geri çağrılarını çağırır. Reddetmek ise tüm reddetme geri çağrılarını çağırır.
local function resolve(p, value)
if p.state ~= "pending" then return end
p.state = "fulfilled"; p.value = value
for _, cb in ipairs(p._resolve) do cb(value) end
end
local function reject(p, reason)
if p.state ~= "pending" then return end
p.state = "rejected"; p.value = reason
for _, cb in ipairs(p._reject) do cb(reason) end
endandThen Zincirleme
Bir :andThen(onFulfill, onReject) yöntemi yeni bir vaat döndürerek zincirleme işlemi mümkün kılar.
function promise:andThen(onFulfill, onReject)
local next = newPromise()
self._resolve[#self._resolve+1] = function(v)
local ok, result = pcall(onFulfill, v)
if ok then resolve(next, result)
else reject(next, result) end
end
if onReject then
self._reject[#self._reject+1] = function(e)
local ok, result = pcall(onReject, e)
if ok then resolve(next, result)
else reject(next, result) end
end
end
return next
endKorutin Destekli Vaat
Vaatleri korutinlerle birleştirin: bir korutin yield yaparak bir vaadi bekler ve vaadin tamamlama geri çağrısı onu devam ettirir.
Promise.all
Birden çok vaadin hepsinin tamamlanmasını bekleyin.
local function all(promises)
local results = {}
local count = #promises
local combined = newPromise()
for i, p in ipairs(promises) do
p:andThen(function(v)
results[i] = v; count = count - 1
if count == 0 then resolve(combined, results) end
end, function(e) reject(combined, e) end)
end
return combined
endPromise.race
İlk tamamlanan vaatle (tamamlanmış veya reddedilmiş) sonucu belirleyin.
local function race(promises)
local combined = newPromise()
for _, p in ipairs(promises) do
p:andThen(
function(v) resolve(combined, v) end,
function(e) reject(combined, e) end
)
end
return combined
endZincirlerde Hata Yayılımı
Zincirdeki herhangi bir adım hata fırlatırsa hata sonraki reddetme işleyicisine yayılır. İşlenmeyen retler zincirin sonunda günlüğe kaydedilmelidir.
İptal Edilebilir Vaatler
Özel bir iptal edilmiş durumuna geçen ve geri çağrıların çalışmasını engelleyen bir :cancel() yöntemi ekleyin.
Tembel Vaatler
Tembel bir vaat, çalışmasını yalnızca ilk andThen eklendiğinde başlatır; isteğe bağlı asenkron işlemler için kullanışlıdır.
Vaatler ve Korutinler Ne Zaman Kullanılmalı
Vaatler geri çağrı tabanlı ve birleştirilebilirdir. Korutinler asenkron kodun senkron görünmesini sağlar. Lua'da korutin destekli vaatler her ikisini sunar: vaatlerin birleştirilebilirliği ve senkron kodun okunabilirliği.
Vaat Sorusu
Bir vaadin andThen yöntemi ne döndürür?
Özet: Vaat Benzeri Kalıplar
Vaatler bekleyen değerleri beklemede/tamamlanmış/reddedilmiş durumlarıyla temsil eder. İşlemleri andThen ile zincirleyin. Asenkron/bekleme tarzı kod için korutinlerle birleştirin. Paralel koordinasyon için all ve race kullanın.
Sıkça Sorulan Sorular
“Promise Benzeri Örüntüler” dersi ücretsiz mi?
Evet — “Promise Benzeri Örüntüler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“Promise Benzeri Örüntüler” dersinde ne öğreneceğim?
Coroutine'ler ve geri çağırmalar kullanarak ertelenmiş/promise nesneleri uygulayın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Promise Benzeri Örüntüler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Basit Bir Olay Döngüsü Oluşturma
- Coroutine'lerle Async/Await
- Promise Benzeri Örüntüler
- luasocket ile Engellemesiz G/Ç