我正在使用Parse.com。每个包装内都有许多钻头,每个类别都有很多包装。
我坚持.then(函数(结果,结果2,结果3)在最后一行。承诺可以有多个承诺,它是可变的。有没有办法得到类似的东西:
.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){
query2.equalTo("category_id", cat[0]);
return query2.find();
}).then(function(results){
var promises = [];
_.each(results, function(result) {
var Drill = Parse.Object.extend("Drill");
var query3 = new Parse.Query(Drill);
query3.equalTo("package_id", result);
promises.push(query3.find());
});
return Parse.Promise.when(promises);
}).then(function(result, result2, result3){
console.log(result);
console.log(result2);
console.log(result3);
});
答案 0 :(得分:1)
由于承诺的固有性质,它可能只能解析为单一价值。这就是说你可能想要做的是看看Promise.all
API。 Promise.all
将从一系列承诺中创建一个新的承诺,它将在您的所有承诺得到解决时解决。 E.g。
Promise.all([promise1, promise2]).then(function(results) {
// Both promise1 and promise 2 resolved and available at variable results
})
Mozilla Promise API的工作示例:
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"]
});