. promises - "" , promises. "promisify" - -, , .
-, . , API, , 50 , . . , , , , . , , getItems(), API , - storeItems(), .
function getAllItems(room, chunkSize, token) {
var cntr = 0;
function getMore() {
return getItems(room, cntr, chunkSize, token).then(function(results) {
cntr += results.length;
if (results.length === chunkSize) {
return storeItems(results).then(getMore);
} else {
return storeItems(results);
}
});
}
return getMore();
}
promises, , promises. .then(), , . . , , , . , , .
:
getAllItems(this.room, 50, config.token).then(function() {
}, function(err) {
});
getItems() storeItems(). .
, , , .
, , - , . promises.
, , URL-, URL-, JSON. , node.js. , getItems() node.js request(). , Javascript, api.
function getItems(room, start, qty, token) {
return new Promise(function(resolve, reject) {
var url = 'https://api.gitter.im/v1/rooms/' + room + '/chatMessages' + '?access_token=' + token + '&limit=' + qty + '&skip=' + start;
request({url: url, json: true}, function(err, msg, result) {
if (err) return reject(err);
resolve(result);
});
});
}
. , , . , :
function storeItems(data) {
return new Promise(function(resolve, reject) {
});
}
, , mySql, . , , , .
. Promise, Bluebird, , - , Bluebird, getItems() :
var Promise = require('bluebird');
var request = Promise.promisifyAll(require('request'));
function getItems(room, start, qty, token) {
var url = 'https://api.gitter.im/v1/rooms/' + room + '/chatMessages' + '?access_token=' + token + '&limit=' + qty + '&skip=' + start;
return request.getAsync({url: url, json: true});
}