मैं कुछ जावास्क्रिप्ट लिख रहा हूं जो लाइब्रेरी कोड के साथ इंटरैक्ट करता है जो मेरे पास नहीं है, और (यथोचित) परिवर्तन नहीं कर सकता। यह समय-सीमित प्रश्नों की श्रृंखला में अगले प्रश्न को दिखाने के लिए उपयोग किया जाने वाला जावास्क्रिप्ट टाइमआउट बनाता है। यह वास्तविक कोड नहीं है क्योंकि यह सभी आशाओं से परे है। यहाँ पुस्तकालय क्या कर रहा है:
....
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = setTimeout( showNextQuestion(questions[i+1]), t );
मैं एक प्रगति बार ऑनस्क्रीन लगाना चाहता हूं जो questionTime * 1000
द्वारा बनाए गए टाइमर से पूछताछ करके भरता है setTimeout
। एकमात्र समस्या यह है कि ऐसा करने का कोई तरीका नहीं है। क्या कोई getTimeout
फंक्शन है जो मुझे याद आ रहा है? जावास्क्रिप्ट टाइमआउट्स की एकमात्र जानकारी जो मुझे मिल सकती है वह केवल निर्माण के माध्यम से setTimeout( function, time)
और उसके माध्यम से हटाने से संबंधित हैclearTimeout( id )
।
मैं एक ऐसे फंक्शन की तलाश कर रहा हूं जो टाइमआउट फायर से पहले या तो बचा हुआ समय लौटाता है, या टाइमआउट के बाद समाप्त हुआ समय कहा जाता है। मेरा प्रगति बार कोड इस तरह दिखता है:
var timeleft = getTimeout( test.currentTimeout ); // I don't know how to do this
var $bar = $('.control .bar');
while ( timeleft > 1 ) {
$bar.width(timeleft / test.defaultQuestionTime * 1000);
}
tl; dr: मैं एक जावास्क्रिप्ट सेटटाइमआउट () से पहले शेष समय कैसे पा सकता हूं?
यहाँ समाधान मैं अभी उपयोग कर रहा हूँ। मैं लाइब्रेरी सेक्शन के माध्यम से गया था जो परीक्षणों के प्रभारी थे, और कोड को अनियंत्रित किया (भयानक, और मेरी अनुमति के खिलाफ)।
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = mySetTimeout( showNextQuestion(questions[i+1]), t );
और यहाँ मेरा कोड है:
// सेट टाइमआउट के लिए रैपर फ़ंक्शन mySetTimeout (फ़ंक, टाइमआउट) { मध्यांतर [एन = सेटटाइमआउट (फंक, टाइमआउट)] = { प्रारंभ: नई तिथि ()। getTime (), समाप्ति: नई तिथि ()। getTime () + टाइमआउट टी: टाइमआउट } वापसी n; }
यह IE 6 नहीं है किसी भी ब्राउज़र में बहुत मौके पर काम करता है। यहां तक कि मूल iPhone, जहां मुझे आशा है कि चीजें अतुल्यकालिक मिलेंगी।