2016-04-07 19 views
0

Bir dizi bağımsız işlev var. Bazıları geri dönmek için diğerlerinden daha uzun sürer.Birden çok işlevin sırayla nasıl geri döndürülmesi gerekir?

var functionArray = [ 
    function() {function1()}, 
    function() {function2()}, 
    ... 
]; 

Ben döngü için onları çağırıyorum:

for(var i = 0; i < functionArray.length; i++) { 
    functionArray[i](); 
} 

Ben konsola olarak kullanıyorum benim app bir metin alanı var ve ben işlevinin sonuçlarını log istiyorum 1 ilk, 2 saniye, vs.

Geri arama yapmadan bunu yapmanın bir yolu var mı? Geri aramalar her bir işlevin bir öncekinin başarısına bağlı olmasını sağlar.

Sanırım, işlev2() işlevini, hem bir successCallback hem de function1() işlevinin bir hata geri dönüşünde çalıştırabilirim ama daha iyi bir yol var mı?

+3

neden işlevleri birbirinden bağımsız ise günlük birbirlerine başarı bağlıdır? – jmugz3

cevap

0

bu işlevler en mantıklı olur o zaman söz ve Promise.all ile çalışan, (Ben açıklamasından varsayalım) asenkron çekiyorsa: ile çalışacak şekilde işlevlerini adapte gerekir

Promise.all(functionArray).then(function (results) { 
    for (var i = 0; i < results.length; i++) { 
     console.log(results[i]); 
    } 
}); 

Not söz verir; Ya her birini Promise içine sarın ve resolve geri aramalarını uygun şekilde aramasını sağlayın, ya da işlevlerin kendileri bir Promise döndürmek zorundadır.

0

Kapatma fonksiyonu olabilir:

for (var i = 0; i < functionArray.length; i++) { 
    (function(x) { 
     functionArray[i](); 
     console.log(x); 
    })(i); 
} 
İlgili konular