2016-04-04 13 views
0

私はParse.comを使用しています。各パッケージには多くのドリルがあり、各カテゴリには多くのパッケージがあります。Javascriptの約束 - 複数の戻りコールバック

私は最後の行に.then(関数(結果、結果2、result3)にこだわっているの約束は、複数の約束を持つことができ、それが可変であるような何か書く取得する方法があります:。。

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

ありがとう!

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

ははい、私はPromise.allを使用し、それが働きました。 –

答えて

1

により、それが唯一のVaに解決することができる約束の固有の性質にルーこれはおそらくあなたがしたいと言われているのは、Promise.all APIを見てみることです。 Promise.allは約束事の配列から新しい約束事を作成し、約束事がすべて解決されたら解決します。例えば。 Mozillaの約束のAPIから

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

の作業例:

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"] 
}); 
関連する問題