Javascript 等待查询完成,然后发送响应
我正在使用云代码在服务器端执行一些东西。在我的代码中,我必须执行一系列查询,这些查询应该在while循环中执行。这些查询应该一个接一个地进行。当我运行代码时,它进入每个查询并在完成查询之前返回,因此会出现套接字超时连接错误。有没有办法在继续之前等待查询完成?任何例子都将受到高度赞赏。多谢各位 编辑:下面是一段代码片段Javascript 等待查询完成,然后发送响应,javascript,parse-platform,Javascript,Parse Platform,我正在使用云代码在服务器端执行一些东西。在我的代码中,我必须执行一系列查询,这些查询应该在while循环中执行。这些查询应该一个接一个地进行。当我运行代码时,它进入每个查询并在完成查询之前返回,因此会出现套接字超时连接错误。有没有办法在继续之前等待查询完成?任何例子都将受到高度赞赏。多谢各位 编辑:下面是一段代码片段 while (i < cities.length-1){ if (query) { query = false;
while (i < cities.length-1){
if (query) {
query = false;
cities.forEach(function(object){
var query = new Parse.Query("pictures");
query.descending("likes");
query.equalTo("city", object);
query.limit(1);
query.find().then(function(results){
success: function(results) {
var tempArray = new Array();
tempArray = results;
rankedPosts = rankedPosts.concat(tempArray);
query = true;
i++;
}, error: function() {
response.error("Error");
}
});
});
};
}
while(i
我认为你需要制作一个承诺系列
看
这样做:
// Create a trivial resolved promise as a base case.
var promise = Parse.Promise.as();
var finalResults = [];
// for all the objects in the array...
_.each(cities, function(objectX) { // the "_" is given by using "var _ = require('underscore');" at the beginning of your module
// For each item, extend the promise with a function to query specified objectX
promise = promise.then(function() {
var subPromise = new Parse.Promise();
var query = new Parse.Query("pictures");
query.descending("likes");
query.equalTo("city", objectX);
query.limit(1);
query.find().then(function(results) {
// append cur results to final results
finalResults = _.union (finalResults,results);
subPromise.resolve(results);
}, function(error) {
subPromise.reject(error);
});
return subPromise;
});
});
return promise;
}).then(function() {
// When all queries have been performed
});
我没有测试过这段代码,但我已经成功地使用了类似的东西
无论如何,请记住Parse.com对请求持续时间的限制。
因此,在事件侦听器中为3秒(如beforeSave或afterSave),在
自定义功能,后台作业最多15分钟
希望对你有所帮助我认为你需要制作一个承诺系列 看 这样做:
// Create a trivial resolved promise as a base case.
var promise = Parse.Promise.as();
var finalResults = [];
// for all the objects in the array...
_.each(cities, function(objectX) { // the "_" is given by using "var _ = require('underscore');" at the beginning of your module
// For each item, extend the promise with a function to query specified objectX
promise = promise.then(function() {
var subPromise = new Parse.Promise();
var query = new Parse.Query("pictures");
query.descending("likes");
query.equalTo("city", objectX);
query.limit(1);
query.find().then(function(results) {
// append cur results to final results
finalResults = _.union (finalResults,results);
subPromise.resolve(results);
}, function(error) {
subPromise.reject(error);
});
return subPromise;
});
});
return promise;
}).then(function() {
// When all queries have been performed
});
我没有测试过这段代码,但我已经成功地使用了类似的东西
无论如何,请记住Parse.com对请求持续时间的限制。
因此,在事件侦听器中为3秒(如beforeSave或afterSave),在
自定义功能,后台作业最多15分钟
希望对你有所帮助我认为你需要制作一个承诺系列 看 这样做:
// Create a trivial resolved promise as a base case.
var promise = Parse.Promise.as();
var finalResults = [];
// for all the objects in the array...
_.each(cities, function(objectX) { // the "_" is given by using "var _ = require('underscore');" at the beginning of your module
// For each item, extend the promise with a function to query specified objectX
promise = promise.then(function() {
var subPromise = new Parse.Promise();
var query = new Parse.Query("pictures");
query.descending("likes");
query.equalTo("city", objectX);
query.limit(1);
query.find().then(function(results) {
// append cur results to final results
finalResults = _.union (finalResults,results);
subPromise.resolve(results);
}, function(error) {
subPromise.reject(error);
});
return subPromise;
});
});
return promise;
}).then(function() {
// When all queries have been performed
});
我没有测试过这段代码,但我已经成功地使用了类似的东西
无论如何,请记住Parse.com对请求持续时间的限制。
因此,在事件侦听器中为3秒(如beforeSave或afterSave),在
自定义功能,后台作业最多15分钟
希望对你有所帮助我认为你需要制作一个承诺系列 看 这样做:
// Create a trivial resolved promise as a base case.
var promise = Parse.Promise.as();
var finalResults = [];
// for all the objects in the array...
_.each(cities, function(objectX) { // the "_" is given by using "var _ = require('underscore');" at the beginning of your module
// For each item, extend the promise with a function to query specified objectX
promise = promise.then(function() {
var subPromise = new Parse.Promise();
var query = new Parse.Query("pictures");
query.descending("likes");
query.equalTo("city", objectX);
query.limit(1);
query.find().then(function(results) {
// append cur results to final results
finalResults = _.union (finalResults,results);
subPromise.resolve(results);
}, function(error) {
subPromise.reject(error);
});
return subPromise;
});
});
return promise;
}).then(function() {
// When all queries have been performed
});
我没有测试过这段代码,但我已经成功地使用了类似的东西
无论如何,请记住Parse.com对请求持续时间的限制。
因此,在事件侦听器中为3秒(如beforeSave或afterSave),在
自定义功能,后台作业最多15分钟
希望它有帮助看起来您实际上可以在并行查询(而不是串行查询)中完成这项工作。我解决了一个类似的问题,我必须返回一个布尔结果数组。如果请求数组中存在具有一个电话号码的用户,则必须返回true/false 灵感来自:
Parse.Cloud.define(“电话搜索”),函数(请求、响应){
var list=request.params.phones;
//初始化结果数组
var finalResults=[];
对于(变量i=0;i0){
控制台日志(“找到一个:+编号);
最终结果[j]=真;
}
},
错误:函数(){
response.error();
}
})
);
})(i) );
}
//返回一个新的承诺,该承诺在所有查询完成时得到解决。
返回Parse.Promise.when(承诺);
}).然后(函数(){
控制台日志(最终结果);
回答:成功(最终结果);
});
});
看起来您实际上可以在并行查询(而不是串行查询)中完成这项工作。我解决了一个类似的问题,我必须返回一个布尔结果数组。如果请求数组中存在具有一个电话号码的用户,则必须返回true/false
灵感来自:
Parse.Cloud.define(“电话搜索”),函数(请求、响应){
var list=request.params.phones;
//初始化结果数组
var finalResults=[];
对于(变量i=0;i0){
控制台日志(“找到一个:+编号);
最终结果[j]=真;
}
},
错误:函数(){
响应.错误