Zaman uyumsuz yöntemleri ortaya çıkaran dizi benzeri bir yapıya sahibim. Zaman uyumsuz yöntem, sırayla daha fazla zaman uyumsuz yöntem ortaya çıkaran dizi yapılarını döndürür. Bu yapıdan elde edilen değerleri saklamak için başka bir JSON nesnesi oluşturuyorum ve bu nedenle geri aramalardaki referansları takip etme konusunda dikkatli olmam gerekiyor.
Bir kaba kuvvet çözümü kodladım, ancak daha deyimsel veya temiz bir çözüm öğrenmek istiyorum.
- Model n seviyeli iç içe geçme için tekrarlanabilir olmalıdır.
- Kapsamdaki rutini ne zaman çözeceğimi belirlemek için promise.all veya benzer bir teknik kullanmam gerekiyor.
- Her öğe, eşzamansız bir çağrı yapmayı gerektirmez. Yani iç içe geçmiş bir promise.all'da JSON dizi öğelerime dizine dayalı olarak atamalar yapamıyorum. Bununla birlikte, tüm özellik atamalarının, çevreleyen rutini çözmeden önce yapıldığından emin olmak için yuvalanmış forEach'de promise.all gibi bir şey kullanmam gerekiyor.
- Bluebird promise lib kullanıyorum ama bu bir gereklilik değil
İşte bazı kısmi kodlar -
var jsonItems = [];
items.forEach(function(item){
var jsonItem = {};
jsonItem.name = item.name;
item.getThings().then(function(things){
// or Promise.all(allItemGetThingCalls, function(things){
things.forEach(function(thing, index){
jsonItems[index].thingName = thing.name;
if(thing.type === 'file'){
thing.getFile().then(function(file){ //or promise.all?
jsonItems[index].filesize = file.getSize();
Promise.map
Promise.each
Promise.defer