通过 parse.cloud.httpReq 发送多个 http 请求

Send multiple http request via parse.cloud.httpReq

我正在尝试通过 Parse.Cloud.httpRequest 发送多个 HTTP 请求,但我得到

{"code":141,"message":"Error: Can't call success/error multiple times

我需要执行所有请求并将结果放入“响应”和 return 响应中,以便我可以在另一个函数中使用它。

或者如果有人可以指导我,也许我走错了方向。

此致

Parse.Cloud.define('http', function(request, response) {

var query = new Parse.Query(Parse.Installation);
var responses = new Array ();

for (var i = 0; i < request.params['params'].length; i++) {
      var object = request.params['params'][i];

      Parse.Cloud.httpRequest({
          url: 'http://185.xxxxxxx'+ object +'&languagePath=en',
          success: function(httpResponse) {
            responses.push(httpResponse);
          }
        }).then(function(httpResponse) {
          console.log('Request Succeeded with response Data ' + httpResponse.text);
          response.success(responses);
        },function(error) {
          // error
          console.error('Request failed with response code ' + httpResponse.status);
        }); 
    }
});

诀窍是收集完成 http 请求的承诺,然后设置响应 "when" 承诺已完成。

Parse.Cloud.define('http', function(request, response) {
    var promises = [];

    for (var i = 0; i < request.params['params'].length; i++) {
        var object = request.params['params'][i];
        promises.push(makeRequestWithObject(object));
    }
    Parse.Promise.when(promises).then(function() {
        // results are passed to this function as var args
        response.success(arguments);
    }, function(error) {
        response.error(error);
    });
});

// return a promise to complete an http request with object
function makeRequestWithObject(object) {
    var url = 'http://185.xxxxxxx'+ object +'&languagePath=en';
    return Parse.Cloud.httpRequest({ url:url });
}