0

{親ループを含めるようにコードを編集しました)

Parse クラウド コードで実行される Parse.Cloud.httpRequest 関数に問題があり、このメソッドに関するドキュメントはありません。

本質的に、私はどちらかができるようにしたいです

  1. Parse.Cloud.httpRequest({})の成功部分でグローバル変数 (channel_id) にアクセスして、パラメーターとして関数 (DoSomething()) に渡すことができるようにするか、
  2. Parse.Cloud.httpRequest({})から JSON 応答を取得し、それを使用する関数 (DoSomething()) をParse.Cloud.httpRequest({})の外に移動します。

今のところ、success内で定義した変数は関数の外にスコープがなく、channel_id などのsuccess内のグローバル変数にアクセスしようとすると、それらにアクセスできません。

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

おそらく、URL やパラメーターなどを単純に受け取り、JSON または XML 応答を返す Parse.Cloud.httpRequest({}) 関数の短いバージョンがあるのでしょうか?

4

1 に答える 1

1

複数のチャネル データをクエリするには、リクエストごとに 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 の内容を配置すると発生します..)

于 2014-09-17T15:56:17.190 に答える