AJAX リクエストやタイマーからのコールバックなど、ある時点で実行される保留中の呼び出しがあるかどうかを確認する方法があるかどうか疑問に思っています ( setTimeout
)。
JavaScript を実行しているエンジンのスタック全体をチェックするようなものです。
AJAX リクエストやタイマーからのコールバックなど、ある時点で実行される保留中の呼び出しがあるかどうかを確認する方法があるかどうか疑問に思っています ( setTimeout
)。
JavaScript を実行しているエンジンのスタック全体をチェックするようなものです。
AJAX コールバックはサーバーの応答 (成功、失敗) に依存していることを考慮すると、実際に呼び出す時が来るまで、呼び出しが保留されているかどうかを定義することはできません。
しかし、これは、このチェックをどのように達成できるかのアイデアですsetTimeout
(そしておそらくsetInterval
):
window.timeoutsRegistry = [];
window.oldSetTimeout = window.setTimeout;
window.setTimeout = function(func, delay) {
var tId = window.oldSetTimeout(function() {
try {
func();
}
catch (exception) {
//Do Error Handling
}
}, delay);
var startedAt = (+new Date);
window.timeoutsRegistry[tId] = {
id: tId,
callback: func,
delay: delay,
startedAt: startedAt,
isPending: function () {
var now = (+new Date);
return ((startedAt + delay) > now);
}
};
};
for(var i =0; i < 10; i++) {
setTimeout(function() {
1+1;
}, 200000);
}
console.log(window.timeoutsRegistry);
var pending = window.timeoutsRegistry.filter(function(element) {
return element.isPending();
});
console.log(pending);
いくつかのメモ:
filter
メソッドはすべてのブラウザでサポートされているわけではありません+new Date
ますか