Name
sn_cai.PageResultIterator
Description
Synchronous mechanism for reading the result pages of cloud access layer calls. Iterator pattern to read the pages returned from API, this api expects all pages to be available before it starts reading the page.
Script
/**
* <h3>Scope: This is ServiceNow Instance side class</h3>
* Helps to iterate over results
* @class
* @alias PageResultIterator
* @memberof sn_cloud_access_la
* @hideconstructor
*/
var PageResultIterator = Class.create();
PageResultIterator.prototype = {
initialize: function (requestId) {
this._requestId = requestId;
var gr = new GlideRecord('sn_cloud_access_la_api_response');
gr.addQuery('u_request_id', requestId);
gr.addQuery('u_is_final_response', false);
gr.orderBy('u_page_number');
gr.query();
this._gr = gr;
},
/**
* has next page
* @returns {boolean} indicator
*/
hasNext: function () {
if (this._gr.hasNext()) {
return true;
} else {
//return final page and mark done
if (!this._isFinalPageReturned) {
var gr = new GlideRecord('sn_cloud_access_la_api_response');
gr.addQuery('u_request_id', this._requestId);
gr.addQuery('u_is_final_response', true);
gr.query();
if (gr.hasNext()) {
this._finalPageGr = gr;
return true;
}
}
}
return false;
},
/**
* get next page
* @returns {PageResult} pageResult
*/
next: function () {
var page;
if (this._gr.next()) {
page = new sn_cloud_access_la.ResultPage(this._gr);
} else if (!this._isFinalPageReturned && this._finalPageGr.next()) {
page = new sn_cloud_access_la.ResultPage(this._finalPageGr);
this._isFinalPageReturned = true;
}
return page;
},
type: 'PageResultIterator'
};
Sys ID
d21f617153931010d53bddeeff7b1216