javascript - Parse Promises Multiple httpRequest Cloud Code -


i'm writing ios app parse.com , cloud code. want retrieve objects contain 1 picture , other informations website , want add them class named news. when run code, every object saved (in class, 1 row = 1 retrieved object) unfortunately first 1 has picture saved.... idea ?

i made lot of searches promises (series / parallels) , think problem comes here..

note : don't worry mylink, myimglink : put make code easy read !

parse.cloud.define("rajoutenews", function(request, response) {     parse.cloud.httprequest({ url: 'myurl'}).then(function(httpresponse) {              var news = [];             var newsclass = parse.object.extend("news");             (var = 0; < 10 ; ++i) {                 var manews = new newsclass();                 manews.set("link", mylink[i]); // "other informations"                 manews.set("imglink", myimglink[i]);                 manews.set("title", mytitle[i]);                  var promises = [];                 promises.push(parse.cloud.httprequest({                     url: $('img').attr('src'),                     method: 'get',                 }).then(function(httpresponse){                         var imgfile = new parse.file("photo.jpg", {base64:httpresponse.buffer.tostring('base64')});                         manews.set("image",imgfile); // picture                         return manews.save();                 }));                 news.push(manews);               }                            promises.push(parse.object.saveall(news, {                 success: function (list) {                     response.success(news.length.tostring() + " ont été sauvegardées");                  },                 error: function (list, err) {                     response.error("error adding news");                 }             }));             return parse.promise.when(promises);          }).then(function(bla,result){             response.success("job done");                }, function(error) {         response.error(error);     } ); }); 

  1. your promises array should put out of loop scope. otherwise , promise array assigned new blank array each loop.

  2. parse.file saved automaticly when parent save, don't need save in advance.

so improve code following, try , tell me weather works.

parse.cloud.define("rajoutenews", function(request, response) {     parse.cloud.httprequest({       url: 'myurl'     }).then(function(httpresponse) {       var promises = [];       var newsclass = parse.object.extend("news");       (var = 0; < 10; ++i) {         var manews = new newsclass();         manews.set("link", mylink[i]); // "other informations"         manews.set("imglink", myimglink[i]);         manews.set("title", mytitle[i]);          var manewspromise = parse.cloud.httprequest({           url: $('img').attr('src'),           method: 'get',         }).then(function(httpresponse) {           var imgfile = new parse.file("photo.jpg", {             base64: httpresponse.buffer.tostring('base64')           });           manews.set("image", imgfile); // picture           return manews.save();         });         promises.push(manewspromise);       }       return parse.promise.when(promises)     }).then(function(bla, result) {       // function call when `parse.promise.when(promises)` done,       //i can't figure out why take 2 params.       response.success("job done");     }, function(error) {       response.error(error);     });   }); 

Comments

Popular posts from this blog

c# - Binding a comma separated list to a List<int> in asp.net web api -

Delphi 7 and decode UTF-8 base64 -

html - Is there any way to exclude a single element from the style? (Bootstrap) -