{编辑我的代码以包含父循环)
我遇到了在Parse云代码中运行的Parse.Cloud.httpRequest函数的问题,并且没有关于此方法的文档。
基本上我希望能够
截至目前,我在成功中定义的任何变量都没有在函数之外的范围,当我尝试访问 success 中的全局变量时,例如channel_id我有无法访问它们
var query = new Parse.Query("Channel");
query.equalTo("FrequentlyUpdated", false);
query.find ({
success: function (results) {
for (var i = 0; i < results.length; i++) {
channel_id = results[i].get("channel_id");
Parse.Cloud.httpRequest({
url: 'http://vimeo.com/api/v2/channel/' + channel_id + '/videos.json',
success: function (httpResponse) {
var response = httpResponse.text;
DoSomething(response, channel_id );
},
error: function (httpResponse) {
status.error("failed");
}
});
}
},
error: function() {
status.error("movie lookup failed");
}
});
可能有一个较短版本的Parse.Cloud.httpRequest({})函数,它只需要获取url和参数等并返回JSON或XML响应?
答案 0 :(得分:1)
为了查询多个通道数据,您可以为每个请求创建一个范围。例如由:
var channels = [....];
for(var i=0; i < channels.length; i++) {
queryChannel(channels[i], DoSomething);
}
function queryChannel(channel_id, onSuccess) {
Parse.Cloud.httpRequest({
url: 'http://vimeo.com/api/v2/channel/' + channel_id + '/videos.json',
success: function (httpResponse) {
var response = httpResponse.text;
onSuccess(response, channel_id );
},
error: function (httpResponse) {
status.error("failed");
}
});
}
请注意,通过调用queryChannel,会引入一个新范围,以保留channel_id不被下一个循环传递覆盖。 (如果你将queryChannel的内容放在循环中,没有函数调用,那么会发生这种情况。)