2014-09-17 5 views
0

{편집) 내가 구문 분석 구름 코드에서 실행되는 Parse.Cloud.httpRequest 기능에 문제가있어액세스 {()}

을 부모 루프를 포함하는 내 코드와 이 방법에 대한 문서는 없습니다. 기본적으로

내가 Parse.Cloud.httpRequest의 성공 일부 ({}) 그래서이 될 수 있음에 하나

  1. 액세스 전역 변수 (CHANNEL_ID) 수 있도록하고 싶습니다 함수 (해봐요()) 또는
  2. Parse.Cloud.httpRequest ({})로부터의 JSON 응답을 얻을 외부 (해봐요을())을 사용하는 기능을 이동 Parse.Cloud에 파라미터로서 전달 .httpRequest ({}). 지금 현재로

, 어떤 변수 나 함수의 외부 성공의 내부에는 범위가 정의하지 않으며 나는 그런 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

코드에서 이미 channel_id에 액세스 할 수 있습니다. 나에게 그것은 진짜로 좋아 보인다! – fast

+0

channel_id에 대해 매우 이상한 값을 얻고 있기 때문에 타이밍 문제 일 수 있습니다. 어쩌면이 httpRequest가 루프 내부에 있기 때문일 수도 있습니다. – user3711987

+0

어쩌면 설명 할 수 있기 때문에 루프를 보여줄 수 있습니다. – ccwasden

답변

1

여러 채널 데이터를 쿼리하기 위해 각 요청마다 하나의 범위를 만들 수 있습니다. 예 : 기준 : 새로운 범위 queryChannel 호출함으로써 다음 루프 패스에 의해 겹쳐 쓰기되는 CHANNEL_ID 보존이 도입되어이

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의 내용을 배치하면 일어납니다.)