2016-02-06 27 views
9

पर काम नहीं कर रहे वादे मैं जावास्क्रिप्ट पर वादे के लिए नया हूं इसलिए मुझे उम्मीद है कि कुछ इस मुद्दे के साथ मेरी मदद कर सकते हैं।आईई 11

समस्या: वादा IE11 पर अमल नहीं किया जा रहा, क्रोम और फ़ायर्फ़ॉक्स

फ़्रेमवर्क का इस्तेमाल किया पर ठीक काम करता है: मैं ES6-promise.d.ts और bluebird.d.ts ही परिणाम उपयोग करने की कोशिश।

कोड:

static executeSomething(): Promise<any> 
{ 
    console.log("inside executeSomething"); 
    var test= new Promise((resolve, reject)=> 
    { 
    console.log("inside Promise"); 

    }).catch(function(error){console.log("error")}); 
console.log("after promise"); 
return test;  
} 

परिणाम: क्रोम और फ़ायरफ़ॉक्स मैं सभी लॉग देख सकते हैं पर लेकिन IE11 पर मैं सिर्फ देख "अंदर executeSomething" जो समस्या का मतलब वादा बनाने के दौरान है।

मैंने सोचा कि ऐसा इसलिए था क्योंकि आईई 11 ने एएस 6 का समर्थन नहीं किया था, लेकिन मुझे ब्लूबर्ड का उपयोग करके एक ही परिणाम मिलता है, मुझे उम्मीद है कि कुछ मेरे मुद्दे पर कुछ प्रकाश ला सकते हैं।

+1

आईई 11 ईएस 6 वादों का समर्थन नहीं करता है। https://kangax.github.io/compat-table/es6/#ie11 – jib

उत्तर

6

आपको IE11 के लिए काम करने के लिए अपने पृष्ठ में एक वादा पॉलीफिल शामिल करने की आवश्यकता है।

es-वादा उपयोग करने के लिए आपका वृत्ति सही है, लेकिन आप की जरूरत भी अपने html

<script src="path/to/es6-promise.js"></script> 

.d.ts फ़ाइल टाइपप्रति संकलक यह परिभाषाओं है दे देंगे में .js फ़ाइल शामिल करने के लिए है, लेकिन क्रम को प्रभावित नहीं करता। वास्तव में ब्राउज़र में वास्तव में चलाने के लिए आपको अपने एचटीएमएल में पॉलीफिल को शामिल करने की आवश्यकता है।

सबसे बड़ी बात यह है कि जब टाइपप्रति का उपयोग कर या किसी संकलित भाषा समय और रन समय संकलन के बीच अंतर है याद करने के लिए।

.d.ts, .ts, .tsx, आदि सभी संकलन समय फ़ाइलें हैं। जिसका अर्थ यह है कि ये वास्तव में निष्पादित की गई फ़ाइलें नहीं हैं, बल्कि इसके बजाय रनटाइम कोड उत्पन्न करने वाली फ़ाइलें हैं।

.js फ़ाइलें रनटाइम फ़ाइलें हैं। ये वे फ़ाइलें हैं जो ब्राउज़र द्वारा संचालित होती हैं।

.d.ts फ़ाइलों नहीं कोड होते हैं, लेकिन इसके बजाय कोड के हस्ताक्षर की एक परिभाषा है और इसलिए हमेशा एक इसी .js फ़ाइल है कि ब्राउज़र में चलेंगे साथ साथ किया जाना चाहिए।

+0

es6-वादा एक भयानक वादा पॉलीफिल है जो इसके लायक है। –

+0

धन्यवाद !!! यह केवल आईई पर होता है यह सुनिश्चित नहीं करता कि क्यों संदर्भ जोड़ना मेरी समस्या हल हो गया। – Moy

+0

@ बेंजामिनग्रेनबाम, क्या आपके पास बेहतर पॉलीफिल के लिए कोई सुझाव है? – bnieland

संबंधित मुद्दे