2016-04-04 20 views
0

Parse.com kullanıyorum. Her paketin içinde birçok matkap ve her kategoride çok sayıda paket var. .Javascript sözleri - çoklu dönüşlü geri aramalar

Ben söz birden sözler olabilir son satırında .sonra (fonksiyonu (sonuç, result2, result3) şaşırıp ve değişkendir almak gibi bir şey yazmak için bir yolu var mı:.

.then(function(multipleResults); 
console.log(mulitpleResults); 

teşekkürler!

var Parse = require('parse/node').Parse; 
 
var _ = require('underscore'); 
 

 
var TrainingPackage = Parse.Object.extend("TrainingPackage"); 
 
var TrainingCategory = Parse.Object.extend("TrainingCategory"); 
 

 
var query2 = new Parse.Query(TrainingPackage); 
 
var query = new Parse.Query(TrainingCategory); 
 

 
query.equalTo("objectId", "kfHnYdd3T1"); 
 

 
query.find().then(function(cat){ 
 
\t 
 
\t query2.equalTo("category_id", cat[0]); 
 
\t return query2.find(); 
 

 
}).then(function(results){ 
 

 
\t var promises = []; 
 

 
    \t _.each(results, function(result) { 
 

 
    \t \t \t var Drill = Parse.Object.extend("Drill"); 
 
    \t \t \t var query3 = new Parse.Query(Drill); 
 
\t \t \t 
 
\t \t \t query3.equalTo("package_id", result); 
 

 
    \t \t \t promises.push(query3.find()); 
 

 
    \t \t }); 
 
    
 
    \t return Parse.Promise.when(promises); 
 

 
}).then(function(result, result2, result3){ 
 

 
\t console.log(result); 
 
\t console.log(result2); 
 
\t console.log(result3); 
 

 

 
});

+0

Evet, bu yüzden Promise.all kullanılan ve işe yaradı. –

cevap

1

nedeniyle sadece tek bir va çözümlenebilir bir söz doğasında doğaya lue. Muhtemelen yapmak istediğin şey, Promise.all API'sine bir göz atmak. Promise.all, vaatler dizisinden yeni bir Söz yaratır ve tüm sözleriniz çözüldüğünde çözülür. Örneğin. Mozilla Promise API

Promise.all([promise1, promise2]).then(function(results) { 
    // Both promise1 and promise 2 resolved and available at variable results 
}) 

Çalışma örneği:

var p1 = Promise.resolve(3); 
var p2 = 1337; 
var p3 = new Promise(function(resolve, reject) { 
    setTimeout(resolve, 100, "foo"); 
}); 

Promise.all([p1, p2, p3]).then(function(values) { 
    console.log(values); // [3, 1337, "foo"] 
});