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

Offical Documentation

Official Docs: