Varsayılan olarak Promise.All ([]) işlevi, her bir sözün sonucunu içeren bir sayı tabanlı dizin dizisi döndürür.Promise.all ile ad tabanlı sonuçlar elde etmek için en iyi es6 yolu
var promises = [];
promises.push(myFuncAsync1()); //returns 1
promises.push(myFuncAsync1()); //returns 2
Promise.all(promises).then((results)=>{
//results = [0,1]
}
() Promise.all ile sonuçların isimli bir dizin döndürmek için en iyi vanilya yolu nedir?
Bir harita ile çalıştı, ama bir dizide bu şekilde sonuç verir: [key1, value1, key2, value2]
GÜNCELLEME:
Sorularım burada, belirsiz görünüyor neden ben sipariş Seviyorum kalmamasıdır tabanlı dizin:
- o korumak için bok var: eklerseniz Kodunuzdaki bir söz, indeksin değişikliğe sahip olabileceğinden, sonuçların tamamını yeniden yazmanız gerekebilir.
results[42]
(aşağıda jib yanıt ile sabitlenebilir) - dinamik bağlamda gerçekten kullanışlı değil:
- o okumak korkunç
var promises = [];
if(...)
promises.push(...);
else{
[...].forEach(... => {
if(...)
promises.push(...);
else
[...].forEach(... => {
promises.push(...);
});
});
}
Promise.all(promises).then((resultsArr)=>{
/*Here i am basically fucked without clear named results
that dont rely on promises' ordering in the array */
});
Yapabilir miyim, yapamaz mısın? "Adlı" ile, anahtar ve değerlerle bir nesneyi kastettiğinizi ve bu tuşların ne olacağını ve ne elde etmeyi beklediğinizi varsayırım. – adeneo
RSVP gibi birçok kitaplık bir karma yöntemi uygular. ['MyFuncAsync1', 'myFuncAsync2'] gibi başka bir diziye ihtiyacınız olabilir. Ve sonra Promise.all (promises) .then ((results) => { var temp = {}; results.forEach ((sonuç, index) => { temp [promisesNames [index]] gibi sonuçların haritasını çıkar = sonuçlanabilir; }); dönüş sıcaklığı; } .o (sonuç => {}) – blessenm
o jQuery hangi $ .her (deffered1, deffered2) .done yapabilirsiniz vaat gibi değil çok kötü (function (result1 , sonuç2) {...}) – phenxd