JSFiddle - React, Tailwind, and code Playground

HTML

<div id="test"></div>

JavaScript

function getList(resource, list, last) {
	return resource.query({last: last})/*.$promise*/.then(function(data){
		list = list.concat(data.list);
		if (data.next) {
			return getList(resource, list, data.last);
		}
		return list;
	});
}

var array = [];
for (var i = 0; i < 100; i++) {
	array.push(i);
}

var resource = {
	query: function(data) {
		var last = data.last;
        return new Promise(function(resolve) {
           resolve({
               next: last !== 100,
               last: last += 20,
               limit: 20,
               list: array.slice(last - 20, last)
           }) 
        });
	}
}

getList(resource, [], 0)/*.$promise*/.then(function(data) {
	$('#test').text(data);   
});