javascript - Parse.com 循环内的 Javascript 异步调用

标签 javascript asynchronous parse-platform foreach promise

我有一份公司列表,想计算向每个公司开具的发票总额。以下是我写的代码。 (循环内的实际逻辑更复杂,但这里把它们去掉了)

基本上,我想一旦循环内的业务逻辑完成就发出警报消息(同样,它会在这里做一些更复杂的事情)。我感觉我可以通过使用 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/

相关文章:

php - 将从 AJAX 发送的多个值插入到 sql 数据库中

javascript - Jquery .on() 在第一次点击后丢失事件检测

javascript - 为 Mongodb 创建多个动态对象 NodeJs 查询

c - `open`和 `close`如何异步串口?

javascript - 防止 React JS 覆盖脚本

sockets - boost::asio::async_resolve 问题

iOS - UISearchBar 动态搜索结果在快速输入时不起作用(快速)

javascript - 第 3 方 XML 解析器 (xpath.js) 给出错误 "Uncaught end tag name: div is not match the current start tagName"

ios - 如果设备被拔掉,解析无声推送通知不工作

java - 我将如何对此 JSON 解析执行 Angular JS ng-repeat ?