gpt4 book ai didi

javascript - 在发送响应之前等待查询完成

转载 作者:行者123 更新时间:2023-11-28 19:57:26 27 4
gpt4 key购买 nike

我正在使用云代码在服务器端执行某些操作。在我的代码中,我必须执行一系列应在 while 循环中执行的查询。这些查询应该一个接一个地完成。当我运行代码时,它会进入每个查询并在完成查询之前返回,因此会出现套接字超时连接错误。有没有办法等待查询完成后再继续?任何例子都将受到高度赞赏。谢谢。

编辑:这是一个代码片段

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");
}
});
});
};
}

最佳答案

我认为你需要制作一个 promise 系列

参见https://parse.com/docs/js_guide#promises-series

做这样的事情:

  // 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),7 秒自定义函数和后台作业最长 15 分钟。

希望对你有帮助

关于javascript - 在发送响应之前等待查询完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296625/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com