访问Parse.Cloud.httpRequest {()}中的全局变量

时间:2014-09-17 15:33:31

标签: javascript http scope parse-platform cloud-code

{编辑我的代码以包含父循环)

我遇到了在Parse云代码中运行的Parse.Cloud.httpRequest函数的问题,并且没有关于此方法的文档。

基本上我希望能够

  1. 使用 Parse.Cloud.httpRequest({})成功部分访问全局变量(channel_id),以便可以将其作为参数传递给函数(DoSomething())或
  2. Parse.Cloud.httpRequest({})获取JSON响应,并在 Parse.Cloud.httpRequest({}之外移动使用它的函数(DoSomething()) )即可。
  3. 截至目前,我在成功中定义的任何变量都没有在函数之外的范围,当我尝试访问 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响应?

1 个答案:

答案 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的内容放在循环中,没有函数调用,那么会发生这种情况。)