मेरे पास एक अजाक्स कॉल है जिसे वर्तमान में सिंक्रोनस होना चाहिए। हालांकि, जब यह अजाक्स कॉल निष्पादित हो रहा है, तब तक ब्राउज़र इंटरफ़ेस फ्रीज करता है, जब तक कि कॉल रिटर्न न हो जाए। टाइमआउट के मामलों में, यह ब्राउज़र को significant period of time के लिए फ्रीज कर सकता है।क्या जावास्क्रिप्ट लूप में अपडेट होने पर ब्राउज़र विंडो को अपडेट करना संभव है?
क्या उपयोगकर्ता इंटरफ़ेस को रीफ्रेश करने के लिए ब्राउज़र (कोई ब्राउज़र) प्राप्त करने का कोई तरीका है, लेकिन किसी भी जावास्क्रिप्ट को निष्पादित नहीं किया गया है? आदर्श रूप से यह window.update()
जैसे कुछ कमांड होगा, जो उपयोगकर्ता इंटरफ़ेस थ्रेड रीफ्रेश करने देगा।
यदि यह संभव हो सकता है, तो मैं तुल्यकालिक AJAX कॉल की तरह कुछ के साथ बदलें सकता है:
obj = do_async_ajax_call();
while (!obj.hasReturned()) {
window.update();
}
// synchronous call can resume
कारण यह है कि मैं setTimeout
उपयोग नहीं कर सकते, या कॉलबैक में एक समारोह को फिर से शुरू, वह यह है कि निष्पादन प्रवाह बाधित नहीं किया जा सकता: (अभी तक भी कई राज्य चर है कि सभी एक दूसरे पर निर्भर हैं, और long_function()
प्रवाह अन्यथा किसी भी तरह फिर से शुरू करना होगा):
function long_function() {
// lots of code, reads/writes variable 'a', 'b', ...
if (sync_call_is_true()) {
// lots of code, reads/writes variable 'a', 'b', ...
} else {
// lots of code, reads/writes variable 'a', 'b', ...
}
// lots of code, reads/writes variable 'a', 'b', ...
return calculated_value;
}
कॉल को तुल्यकालिक क्यों होना चाहिए? –
क्या आप संपूर्ण कॉल कोड पोस्ट कर सकते हैं? यह संभवतः सरल हो सकता है और आपको जो चाहिए उसे समर्थन देने के लिए एक्सएचआर फ़ंक्शंस का उपयोग करें (जब तक कि jQuery एक विकल्प न हो, फिर भी क्लीनर)। यदि न तो कोई विकल्प है, तो मैं अनुरोध करता हूं कि आप 'do_sync_jax_call();' –