如何手动降低parse.com的异步javascript请求速度,使其保持在每秒30个请求以下?

如何手动降低parse.com的异步javascript请求速度,使其保持在每秒30个请求以下?,javascript,node.js,backbone.js,request,parse-platform,Javascript,Node.js,Backbone.js,Request,Parse Platform,我正在从parse.com获取一个名为logCollection的集合,该集合位于我的机器上的一个节点JS脚本中。它有200个元素。每个日志都有一个指向另一个表的链接,即一个名为start的指针。我也要去拿这个 这是我的密码 Parse.User.logIn("user", "pass").then(function(user) { // Do stuff after successful login. console.log('succesfully logged in'); re

我正在从parse.com获取一个名为logCollection的集合,该集合位于我的机器上的一个节点JS脚本中。它有200个元素。每个日志都有一个指向另一个表的链接,即一个名为start的指针。我也要去拿这个

这是我的密码

Parse.User.logIn("user", "pass").then(function(user) {
  // Do stuff after successful login.
  console.log('succesfully logged in');
  return logCollection.fetch();
}).then(function(content) {
  console.log('done fetching logs: ' + logCollection.length);
  var promises = [];
  _.each(logCollection.models, function(thisLog) {

    promises.push(thisLog.attributes.start.fetch());

  });
  // Return a new promise that is resolved when all of the deletes are finished.
  return Parse.Promise.when(promises);
});
问题是,它每秒至少会触发200次启动获取,并且会导致parse.com上每秒30次请求的限制出现问题

有更好的方法吗?如何降低js发出请求的速度


感谢

在解析查询中,您可以使用查询中的include方法获取该对象指向的完全获取的对象:

var query = new Parse.Query("SomeClass");
query.include('columnName');
query.find().then(function(results) {
  // each result will have 'columnName' as a fully fetched parse object.
});
这也适用于子对象:

query.include('columnName.nestedColumnName');
或作为数组:

query.include(['columnName', 'anotherPointerColumn']);

我提出了一个非常有效的解决方案。这段时间都在解析文档上

以下代码仅在最后一个请求完成后才会触发一个请求。这样,我就可以发出许多请求,而不用担心达到极限

var query = new Parse.Query("Comments");
query.equalTo("post", 123);

query.find().then(function(results) {
  // Create a trivial resolved promise as a base case.
  var promise = Parse.Promise.as();
  _.each(results, function(result) {
    // For each item, extend the promise with a function to delete it.
    promise = promise.then(function() {
      // Return a promise that will be resolved when the delete is finished.
      return result.destroy();
    });
  });
  return promise;

}).then(function() {
  // Every comment was deleted.
});

你必须使用计时器。你可以发出30个请求。然后使用计时器等待一秒钟或稍长一点,然后再发出30个请求。或者,您可以使用计时器每30秒触发一个请求。您必须更改迭代无法使用的项目的方式。每个项目都可以在计时器启动时从中获取下一个项目。通常,这样做的方式是收集所有要迭代到数组中的项(如果它们尚未在数组中),然后跟踪作用域变量中的当前迭代索引。可以使用查询上的include方法获取指向“start”的对象。查询。包括“开始”;这将消除所有额外的查询。