पर काम को परिभाषित करने का समर्थित तरीका है, मैंने प्रयोग करके खोज की है कि 0 की अवधि के साथ टाइमर बनाने से मुझे ईवेंट कतार में काम को स्थगित कर दिया जा सकता है। मुझे वास्तव में यह सुविधा पसंद है, क्योंकि यह बहुत सारे बदसूरत पुनर्वित्त मुद्दों से परहेज करने की अनुमति देता है। क्या यह जानबूझकर कार्यक्षमता है जो बदलेगी नहीं? क्या इसे दस्तावेज में जोड़ा जा सकता है? यदि नहीं, तो ऐसा करने का कोई समर्थित तरीका है?डार्ट: शून्य अवधि अवधि टाइमर का उपयोग ईवेंट लूप
उत्तर
वर्तमान उत्तर
इस scheduleMicrotask(Function callback)
साथ है करने के लिए उचित तरीके से।
यहाँ API दस्तावेज़ देखें: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-async#id_scheduleMicrotask
async कार्यों और घटना पाश पर एक महान लेख यहाँ है: (पूर्व डार्ट 1,0) https://www.dartlang.org/articles/event-loop/
ओल्ड उत्तर
अभी के लिए, जवाब है हां, new Timer(0, callback)
फ़ंक्शन कॉल को स्थगित करने का सबसे आसान तरीका है।
जल्द ही, उम्मीद है कि http://dartbug.com/5691 तय किया जाएगा और एक बेहतर तरीका होगा। टाइमर के साथ समस्या यह है कि HTML spec का कहना है कि कॉलबैक 4ms से अधिक नहीं होना चाहिए। आप जो कर रहे हैं उसके आधार पर यह समस्या पर हो सकता है।
माइक्रोसॉफ्ट ने इसे हल करने के लिए setImmediate()
पेश किया। यह किसी भी redraws के बाद, अगले घटना पाश की शुरुआत में कॉलबैक का आह्वान करता है। डार्ट में मेरा पसंदीदा समाधान Future.immediate()
अगले ईवेंट लूप तक स्थगित होना है, और संभावित रूप से defer()
जैसे फ़ंक्शन को कॉलबैक लेना है।
लेकिन new Timer(0, f)
अभी भी एक बेहतर समाधान उपलब्ध होने के बाद भी काम करेगा। हालांकि मैं इसके लिए एक लिंट चेतावनी दिमाग नहीं रखूंगा।
यक, 4 एमएमएस देरी दुर्भाग्यपूर्ण है। "स्थगित" (और भविष्य का उपयोग करने के बाद। इसका उपयोग करें) बहुत अच्छा लगता है। अभी के लिए, मैं एक डिफर फ़ंक्शन को कोड कर सकता हूं जो इसे टाइमर के साथ बनाता है। मुझे लगता है कि यह वास्तव में महत्वपूर्ण है। अपने फॉरवर्ड कॉल में वापस कॉल करने से हमेशा ईवेंट संचालित कोड में मुश्किल बग का कारण बनता है। एक और चीज जो ठंडा हो, वह एक जरूरी घटना बनाने में सक्षम होना है जो "कतार कूदता है"। कभी-कभी आप किसी भी कतारबद्ध घटनाओं को संसाधित करने से पहले तुरंत राज्य को बदलने में सक्षम होने के लिए ऐसा करना चाहते हैं। –
मैंने एसिंक एपीआई की वर्तमान स्थिति को प्रतिबिंबित करने के लिए अपना उत्तर अपडेट किया, जो कि बहुत बेहतर है। मेरा मानना है कि 4 एमएमएस देरी अब सभी समर्थित ब्राउज़रों पर चली जानी चाहिए (आईई 10+)। –