Promise chain
by Artem
JavaScript
'use strict';
const httpRequest = params => new Promise((resolve, reject) => {
jQuery.getJSON('https://jsonplaceholder.typicode.com/posts/1')
.done(data => {
resolve(data);
})
.error(err => {
reject(data);
});
});
const checkFirstTable = () => {
//
const params = {};
return httpRequest(params);
};
const checkSecondTable = () => new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 2); // num
});
const getFirstTableData = () => new Promise((resolve, reject) => {
setTimeout(resolve, 1000, 'table data1'); // table data
});
const getSecondTableData = () => new Promise((resolve, reject) => {
setTimeout(resolve, 1000, 'table data2'); // table data
});
const checkTableCondition = tableData => {
if (tableData === 'table data1') return handleData1;
if (tableData === 'table data2') return handleData2;
};
const handleData1 = d => {
console.log('handleData1 ', d);
};
const handleData2 = d => {
console.log('handleData2 ', d);
};
const getSecondTableDataPromise = () => checkSecondTable().then(num => {
if (num > 0) {
return getSecondTableData();
}
});
checkFirstTable()
.then(num => {
if (num > 0) {
return getFirstTableData();
} else if (num === 0) {
return getSecondTableDataPromise();
}
})
.then((tableData, _ = checkTableCondition(tableData)) => {
_(tableData);
});