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); } ); });
your
promises
array should put out of loop scope. otherwise ,promise
array assigned new blank array each loop.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
Post a Comment