…できてるのかどうか分からないんだけど、用途を絞っちゃう場合はこんな感じでいいの?
3000ミリ秒後にコンソールに出力される例
<!DOCTYPE html>
<html>
<head>
<script>
var RetryableQuerySelector = function self(selector, maxRetries, delay) {
return new Promise(function (resolve) {
var element = document.querySelector(selector);
if (element) {
resolve(element);
} else if (maxRetries-- > 0) {
setTimeout(function () {
self(selector, maxRetries, delay).then(function (element) {
return resolve(element);
});
}, delay);
} else {
console.error('Failed to select: ' + selector);
}
});
};
RetryableQuerySelector('div', 5, 1000).then(function (element) {
console.log(element);
});
setTimeout(function () {
document.body.appendChild(document.createElement('div'));
}, 3000);
</script>
</head>
<body>
</body>
</html>
もっと一般的な実装の仕方がよく分からないので、詳しい方おられましたらコメントや編集リクエストお願いします…
↓
書きました