JSFiddle - React, Tailwind, and code Playground
HTML
<button id="btn">Click me</button>
JavaScript
Function.prototype.deferUntil = function(condition, timeLimit) {
var ret = condition();
if (ret) {
this(ret);
return null;
}
var self = this, interval = null, time = ( + new Date());
interval = setInterval(function() {
ret = condition();
if (!ret) {
if (timeLimit && (new Date() - time) >= timeLimit) {
// Nothing
} else {
return;
}
}
interval && clearInterval(interval);
self(ret);
}, 20);
return interval;
};
$(function() {
$('#btn').click(function() {
setTimeout(function() {
$('#btn').after('<div id="div">Loaded</div>');
}, 2000);
(function() {
$('#div').after('<div>Div loaded</div>');
}).deferUntil(function() {
return $('#div').length > 0;
}, 5000);
});
});