के साथ सिंक्रनाइज़ छवियों को लोड करना मुझे एक छवि को तुल्यकालिक रूप से लोड करने की आवश्यकता है, मुझे छवि लोड होने तक जावास्क्रिप्ट के निष्पादन को रोकने की आवश्यकता है। चूंकि image.onload एसिंक्रोनस है, मुख्य फ़ंक्शन छवि लोड होने से पहले वापस आ जाएगा।जावास्क्रिप्ट
मैं कैनवास का उपयोग कर रहा हूं, और अगर मुख्य फ़ंक्शन छवि लोड होने से पहले लौटाता है, और इसलिए खींचा जाता है, तो कैनवास में अन्य चीजें छवि से पहले खींची जाएंगी। यह काम नहीं करता है क्योंकि कैनवास पर ड्राइंग का आदेश बहुत महत्वपूर्ण है!
var img = new Image();
img.onload = function() {
//image drawing code here
}
img.src = "blahblahblah";
//function returns here, and other drawing code happens before image is drawn
इस तुल्यकालिक ऐसा करने के लिए, या जब तक छवि पूरी तरह से समारोह से लौटने से पहले भरी हुई है प्रतीक्षा करने के लिए एक रास्ता है:
यहाँ मैं क्या कर रहा हूँ है?
मेरे पास कैनवास पर बहुत अधिक ड्राइंग करने वाला बहुत बड़ा लूप है, और छवि लोड होने के दौरान लूप रोकना मुश्किल है, जो मुझे चाहिए। अगर मैंने छवि का इस्तेमाल किया। कॉलबैकलोड करें, लूप में कुछ और के बाद छवि खींची जाएगी। इससे छवियों को सामने आने वाली चीजों के सामने प्रकट होने का कारण बनता है। – devongovett
फ़ंक्शन में, जो छवि लोडिंग शुरू करता है, आखिरी बात के रूप में, एक फ़ंक्शन शुरू करने के लिए setInterval का उपयोग करें जो किसी ऑब्जेक्ट पर बंद हो जाता है जो आपकी छवि द्वारा बंद भी होता है। कॉलबैकलोड करें। "अंतराल" फ़ंक्शन को तब तक कुछ नहीं करना चाहिए जब तक एक विशिष्ट ध्वज सेट नहीं किया जाता है। वह झंडा आपकी छवि द्वारा सेट किया जाना चाहिए। कॉलबैकलोड करें। जब यह ध्वज सेट पाता है, तो "अंतराल" फ़ंक्शन को कोड के अगले भाग को कॉल करना चाहिए; कोड जो "पृष्ठभूमि" छवि के शीर्ष पर खींचता है। –
आप * इसे रोक नहीं सकते हैं, आपको इस विचार को अपने दिमाग से छुटकारा पाना चाहिए। –