我有一份公司列表,想计算向每个公司开具的发票总额。以下是我写的代码。 (循环内的实际逻辑更复杂,但这里把它们去掉了)
基本上,我想一旦循环内的业务逻辑完成就发出警报消息(同样,它会在这里做一些更复杂的事情)。我感觉我可以通过使用 Promises 来解决这个问题,但不太确定如何使用它。我不太关注 Parse.com 的文档。我已经被这个问题困扰了几个小时了。请帮忙!
function calculate(companies) {
companies.forEach(function(company) {
var total = 0;
var invoice = Parse.Object.extend('Invoice');
var query = new Parse.Query(invoice);
query.equalTo('invoiceCompany', company);
query.find().then(function(invoices) {
invoices.forEach(function(invoice) {
total += parseFloat(invoice.get('amount'));
});
});
});
alert("Calculated Finished");
}
最佳答案
您可以并行使用 Promise:
https://parse.com/docs/js/guide#promises-promises-in-parallel
它会是这样的:
function calculate(companies) {
var promises = [];
companies.forEach(function(company) {
var total = 0;
var invoice = Parse.Object.extend('Invoice');
var query = new Parse.Query(invoice);
query.equalTo('invoiceCompany', company);
var queryPromise = query.find().then(function(invoices) {
invoices.forEach(function(invoice) {
total += parseFloat(invoice.get('amount'));
});
});
promises.push(queryPromise);
});
return Parse.Promise.when(promises);
}
calculate(companies).then(function() {
alert("Calculated Finished");
});
关于javascript - Parse.com 循环内的 Javascript 异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31005976/