如何手动降低parse.com的异步javascript请求速度,使其保持在每秒30个请求以下?
我正在从parse.com获取一个名为logCollection的集合,该集合位于我的机器上的一个节点JS脚本中。它有200个元素。每个日志都有一个指向另一个表的链接,即一个名为start的指针。我也要去拿这个 这是我的密码如何手动降低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.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”的对象。查询。包括“开始”;这将消除所有额外的查询。