$(function () { pageContext.i18n.modTalk = 'moderation talk'; pageContext.i18n.replyToComment = 'Reply'; pageContext.i18n.modTalkEmpty = 'moderation talk is empty'; pageContext.url.getModTalk = "/comments/%25ID%25/listModTalk.json"; pageContext.url.possibleCommentRecipients = "/comments/%ID%/possibleRecipients.json"; pageContext.url.commentEdit = '/comments/%25ID%25/edit.html'; pageContext.url.commentView = '/comments/%ID%/view.html'; pageContext.i18n.commentVisibility = { 'full': 'Viewable by all users', 'op': 'Viewable by the original poster', 'mod': 'Viewable by moderators', 'opAndMod': 'Viewable by moderators and the original poster', 'other': 'Advanced visibility', 'dialogTitle': 'Comment visibility', 'selectGroups': 'Visible to groups', 'selectOther': 'Other recipients', 'selectOriginalPoster': 'Original poster', 'selectModerators': 'Moderators', 'selectAssignees': 'Asked to answer users' }; pageContext.i18n.commentMenuLabels = { 'comment-edit': 'comments.menu.edit', 'comment-delete': 'comments.menu.delete', 'comment-convert': 'comments.menu.convert' };pageContext.i18n.answer= { bestAnswer: 'Best Answer', controlBar : { accept: 'Accept', unaccept: 'Unaccept', acceptCommand: 'Accept this answer as correct', cancelAcceptedCommand: 'Remove this answers accepted status' } }; window.croles = { u: false, op: false, m: false, og: false, as: false, ag: false, dc: false, doc: false, eo: false, ea: false }; tools.init({ q: { e: false, ew: false, eo: false, r: false, ro: false, d: false, dow: false, fv: false, c: false, co: false, p: false, tm: false , ms: false, mos: false }, n: { f: false, vf: false, vfo: false, vr: false, vro: false, c: false, co: false, vu: false, vd: false, w: false, wo: false, l: false }, c: { e: false, eo: false, d: false, dow: false, ta: false, tao: false, l: false }, a: { e: false, ew: false, eo: false, d: false, dow: false, a: false, aoq: false, ao: false, tc: false, tco: false, p: false, tm: false }, pc: croles }, { tc: true, nsc: true }); commandUtils.initializeLabels(); }); Skip to Content
0

How to solve attachRequestCompleted event getting called infinite in odatamodel v.2 ?

Feb 18, 2017 at 07:57 PM

569

avatar image
Former Member
onPressBtn : function(){
	var oModel = this.getModel();
	var oModel2 = this.getModel();
	
	oModel.read("/Orders",{
		success : function(oData){
			console.log("Orders");
			console.log(oData.results);
		},
	        error : function(oData){
		        console.log(oData);
		});
					
		oModel.attachRequestCompleted(function(oData){
		     oModel2.read("/Employees",{
			success : function(oData){
			    console.log("Employees");
			    console.log(oData.results);	
		        },
			error : function(oData){
			    console.log(oData);	
			}
		      });
		});
},
10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

1 Answer

Veeraraghavan Narasimhan
Feb 19, 2017 at 03:16 AM
0

Hello Siddharth,

As expected the oModel2.attachRequestCompleted() gets into infinite loop. Is there a specific reason you place that in event handler of request completed ??

onPressBtn : function()
{ 
   var oModel = this.getModel(); 
   var oModel2 = this.getModel(); 
   oModel.read("/Orders",
              { 
                  success : this.readOrders.bind(this), 
                  error : function(oData){ console.log(oData); }); 
},
readOrders : function(oData,oResponse){
    this.getModel().read("/Employees",
          { success : function(oData){ 
                  console.log("Employees"); 
                   console.log(oData.results);	
          }, error : function(oData){ console.log(oData);	} });
},

This ensures that the second call happens on the success of first call. Does this handle your scenario?

Thanks and Regards,

Veera

Show 2 Share
10 |10000 characters needed characters left characters exceeded
Former Member

Yes! In my client project, there is a use case.

There is a dependency of first oModel result with the second oModel result.

I have to manipulate a table with second oMdoel result with first oModel result.

0

Can you check the above code , you will have response of first request available while calling the second.

0