JSFiddle - React, Tailwind, and code Playground
JavaScript
function isGood(number) {
return $.Deferred(function(dfrd) {
if(parseInt(number, 10) == number) {
setTimeout(function() { dfrd.resolve(number); }, 100);
} else {
setTimeout(function() { dfrd.reject(number); }, 100);
}
}).promise();
}
function invertPromise(p) {
return $.Deferred(function(dfrd) {
p.then(dfrd.reject, dfrd.resolve);
});
}
function findGoodNumber(numbers) {
if(numbers.length === 0) {
return $.Deferred.reject().promise();
} else {
return invertPromise(numbers.reduce(function(p, num) {
return p.then(function() {
return invertPromise(isGood(num));
});
}, $.when()));
}
}
var arr = [3.1, 9.6, 17.0, 26.9, 89];
findGoodNumber(arr).then(function(n) {
console.log('Good number found: ' + n);
}, function(n) {
console.log('No good numbers found');
});