Düğümü kullanmaya yeni başladım ve hızlı bir şekilde fark ettiğim bir şey, geri aramaların ne kadar çabuk aptalca bir girinti seviyesine kadar yükselebileceğidir:
doStuff(arg1, arg2, function(err, result) {
doMoreStuff(arg3, arg4, function(err, result) {
doEvenMoreStuff(arg5, arg6, function(err, result) {
omgHowDidIGetHere();
});
});
});
Resmi stil kılavuzu ayrı bir işlevi her geri arama koymak için söylüyor, ama bu nesne tüm geçirilecek zorundadır olarak tek bir nesne, mevcut birkaç katman aşağı üst düzeyde beyan kapanışları kullanımına aşırı kısıtlayıcı görünüyor ve yapım ara geri aramalar.
Burada yardım etmek için işlev kapsamını kullanmak uygun mudur? Global ish nesnesine erişmesi gereken tüm geri çağırma işlevlerini, o nesneyi bildiren bir işlevin içine koyun, böylece kapanmaya gider mi?
function topLevelFunction(globalishObject, callback) {
function doMoreStuffImpl(err, result) {
doMoreStuff(arg5, arg6, function(err, result) {
callback(null, globalishObject);
});
}
doStuff(arg1, arg2, doMoreStuffImpl);
}
ve daha birçok katman için ...
Yoksa her geri arama için adlandırılmış bir işlev bildirmeden girinti düzeylerini azaltmaya yardımcı olacak çerçeveler vb. Var mı? Geri arama piramidiyle nasıl başa çıkıyorsunuz?