IMHO, वर्तमान जवाब गंभीर उपयोग के लिए अपर्याप्त है , क्योंकि यह वादा को हल करने के लिए प्रभावी रूप से टाइप-चेकिंग अक्षम करता है।
मुझे लगता है एक बेहतर दृष्टिकोण जब Promise.all
नहीं-जरूरी अंतर-आबंटित मूल्यों की एक सीमित संख्या के साथ कहा जाता है के लिए Promise
अतिरिक्त अधिभार हस्ताक्षरों के साथ (प्रकार PromiseConstructor
का) वस्तु की मूल प्रकार परिभाषा का विस्तार है :
interface PromiseConstructor
{
all<T1, T2>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>;
all<T1, T2, T3>(values: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>, T3 | PromiseLike<T3>]): Promise<[T1, T2, T3]>;
...
}
आपको जितनी जरूरत हो उतनी ओवरलोड लोड करें। यह दृष्टिकोण onfulfilled
कॉलबैक की value
बहस में सभी तत्वों के लिए पूर्ण प्रकार सुरक्षा प्रदान करता है:
Promise.all([1, "string", true]).then(value => {
var a: number = value[0]; // OK
var b: number = value[1]; // Type 'string' is not assignable to type 'number'.
...
});
स्रोत
2016-12-22 17:46:53
सबसे उत्कृष्ट! –
दृश्य स्टूडियो कोड को मंजूरी दी है कि वाक्य रचना लेकिन '' 'tslint''' अपने निर्माण प्रणाली में बंडल शिकायत:' '' सरणी सही ढंग से घोषित नहीं किया गया है यह होना चाहिए प्रकार [] या सरणी '' '। आश्चर्यजनक रूप से, उस त्रुटि संदेश की खोज वास्तव में ** 0 ** परिणाम पैदा करती है। –
इसलिए लिखें 'लू फू: ऐरे <वादा, वादा > = [aurelia.start(), entityManagerProvider.initialize()]; –