gpt4 book ai didi

Javascript Promise - 多个返回回调

转载 作者:行者123 更新时间:2023-12-03 07:16:43 26 4
gpt4 key购买 nike

我正在使用 Parse.com。每个包内有很多练习,每个类别中有很多包。

我被困在最后一行的 .then(function(result, result2, result3) 上。 promise 可以有多个 promise ,并且它是可变的。有没有办法写出类似的内容:

.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);


});

最佳答案

由于 Promise 的固有性质,它可能只能解析为单个值。话虽这么说,您可能想做的是看一下 Promise.all API。 Promise.all 将从一系列 Promise 中创建一个新的 Promise,当所有 Promise 都得到解决时,它就会得到解决。例如

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"]
});

关于Javascript Promise - 多个返回回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36398209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com