मैंने ES7 सुविधा async/await
का उपयोग करना शुरू किया, जो एसिंक्रोनस कार्यों से निपटने के लिए सबसे अच्छा तरीका प्रदान करता है, और आपके कोड क्लीनर और पठनीय बनाता है।क्या वापसी के बिना एसिंक फ़ंक्शन को हल करना संभव है
हालांकि यह आपको एसिंक फ़ंक्शन द्वारा बनाए गए वादे का उपयोग नहीं करता है, इसलिए यदि आप अपने एसिंक फ़ंक्शन में कुछ एसिंक अनुरोध करते हैं तो आपको इसे प्रमाणित करना चाहिए, फिर इसका इंतजार करना चाहिए और फिर परिणाम वापस कर देना चाहिए। मैं इसका मतलब यह:
async function doStuff() {
//stuff...
var p = arguments.callee.promise;
$.get('http://some/url/...', function(result) {
// stuff...
p.resolve(result);
});
}
या यहाँ तक कि:
async function doStuff() {
//stuff...
$.get('http://some/url/...', function(result) {
// stuff...
async.resolve(result);
});
}
इस तरह
async function doStuff() {
//stuff...
var value = await new Promise(function(resolve) {
$.get('http://some/url/...', function(result) {
// stuff...
resolve(result);
});
});
return value;
}
क्या होगा यदि आप वादा समारोह के द्वारा बनाई गई करने के लिए एक सूचक मिल सकता है तो अपने कोड की तरह लग सकता है आपको सीधे प्रोमिस एपीआई तक पहुंचने की आवश्यकता नहीं है जो आपके कोड को बिना किसी अतिरिक्त काम पर केंद्रित करता है।
मैं तुम्हें 'async' /' await' की बात को अनदेखा कर रहे हैं सोच रहा हूँ। क्या आप एक परिदृश्य तैयार कर सकते हैं जहां बस 'परिणाम = $ .get (someUrl) का इंतजार कर रहे हैं; doStuffWith (परिणाम) 'पर्याप्त नहीं है? प्रस्ताव का पूरा बिंदु कॉलबैक से निपटना नहीं है। – Amadan
मैंने सोचा कि क्या आप पहले ही वादे में हैं कि आपको एक और बनाने की आवश्यकता क्यों है। नीचे बर्गि ने स्पष्ट रूप से जवाब दिया - संख्या =) – rokstar