Parse platform Query+httpRequests=许多承诺无法正常工作
我有一个简单的代码:有一个查询,在这个查询中,对于每个项目,我都会做一个httpRequest,这个请求会将数据保存在 我的问题是:如何在完成云代码之前完成所有承诺/请求/保存Parse platform Query+httpRequests=许多承诺无法正常工作,parse-platform,httprequest,Parse Platform,Httprequest,我有一个简单的代码:有一个查询,在这个查询中,对于每个项目,我都会做一个httpRequest,这个请求会将数据保存在 我的问题是:如何在完成云代码之前完成所有承诺/请求/保存 var query = new Parse.Query(Readers); query.find({ success: function(readersList) { for(var qi = 0; qi < readersList.length; qi++) { p
var query = new Parse.Query(Readers);
query.find({
success: function(readersList) {
for(var qi = 0; qi < readersList.length; qi++) {
promises.push(Parse.Cloud.httpRequest({
url: '......',
success: function(httpResponse) {
var Post = Parse.Object.extend("Post");
var resultList = httpResponse.data.data.items;
for(var hRi = resultList.length; hRi > 0 ; hRi--) {
post.save();
}
}
}));
break;
}
Parse.Promise.when(promises).then(function(){
response.success("All Readers Done!");
});
}
});
提前感谢:
编辑2
我的意图是:在查询之后,迭代这些元素,并为每个元素向提要发出HTTP请求。根据此提要的结果,我将检查该项是否已存在于数据库中,然后保存/更新这些项。您遇到的问题是,您正在将Parse.Cloud.httpRequest承诺添加到数组中,但没有任何内容等待post.save。您可以将其链接以获得所需的结果:
var promise = Parse.Cloud.httpRequest({
url: '....'
}).then(function (httpResponse) {
var Post = Parse.Object.extend("Post");
var resultList = httpResponse.data.data.items;
var savePromises = [];
for(var hRi = resultList.length; hRi > 0 ; hRi--) {
// not sure what "post" is in this context?
savePromises.push(post.save());
}
// wait for all saves to finish
return Parse.Promise.when(savePromises);
});
promises.push(promise);
我添加了您共享的代码,但似乎不起作用。似乎我需要使代码同步,这样成功就被称为最后一次。任何在成功后被调用的东西都将被忽略,至少看起来。。。
var promise = Parse.Cloud.httpRequest({
url: '....'
}).then(function (httpResponse) {
var Post = Parse.Object.extend("Post");
var resultList = httpResponse.data.data.items;
var savePromises = [];
for(var hRi = resultList.length; hRi > 0 ; hRi--) {
// not sure what "post" is in this context?
savePromises.push(post.save());
}
// wait for all saves to finish
return Parse.Promise.when(savePromises);
});
promises.push(promise);