/ / प्रतीक्षारत {…} जावास्क्रिप्ट में? - जावास्क्रिप्ट, async- वेट

जावास्क्रिप्ट में इंतजार {...}? - जावास्क्रिप्ट, async-await

मेरे पास async फ़ंक्शंस का एक समूह है, जो मैं हमेशा या लगभग हमेशा सिंक्रोनस कॉल करना चाहता हूं। तो हम सभी पैटर्न जानते हैं

async function somethingcool() {
return new Promise(resolve => {
setTimeout(resolve, 1000, "Cool Thing");
});
}
const coolthing = await somethingcool();
console.log(coolthing);

लेकिन मेरे पास यह कूल मॉड्यूल है, जिसे कईकॉल्थिंग्स कहा जाता है, जो कई शांत चीजों की पेशकश करता है, सभी को एसिंक्स फ़ंक्शन के माध्यम से जो मैं हमेशा या लगभग हमेशा इंतजार करना चाहता हूं।

import * as cool from "manycoolthings";
await cool.updateCoolThings();
const coolThing = await cool.aCoolThing();
const anohtherCoolThing = await cool.anotherCoolThing();
const rus = await cool.coolThingsAreUs();
await cool.sendCoolThings();
await cool.postCoolThing(myCoolThing);
await cool.moreCoolThings();
const thingsThatAreCool = await cool.getThingsThatAreCool();

बेहद विरोधाभासी और मूर्खतापूर्ण उदाहरण, कोबिंदु का वर्णन करें। मेरे पास एक वास्तविक उपयोग का मामला है, कठपुतली पर आधारित परीक्षणों का एक सेट जहां अधिकांश कार्य एस्किंक हैं और वे लगभग हमेशा इंतजार करना चाहते हैं।

हमारे जावास्क्रिप्ट कोड के सभी प्रतीक्षित प्रदूषण से बचने का एक बेहतर तरीका होना चाहिए।

अगर ऐसा कुछ हो सकता है तो बहुत अच्छा होगा

import * as cool from "manycoolthings";
await {
cool.updateCoolThings();
const coolThing = cool.aCoolThing();
const anotherCoolThing = cool.anotherCoolThing();
const rus = cool.coolThingsAreUs();
cool.sendCoolThings();
cool.postCoolThing(myCoolThing);
cool.moreCoolThings();
const thingsThatAreCool = cool.getThingsThatAreCool();
}

या यहां तक ​​कि बस

import * as cool from "manycoolthings";
cool.updateCoolThings();
const coolThing = cool.aCoolThing();
const anotherCoolThing = cool.anotherCoolThing();
const rus = cool.coolThingsAreUs();
cool.sendCoolThings();
cool.postCoolThing(myCoolThing);
cool.moreCoolThings();
const thingsThatAreCool = cool.getThingsThatAreCool();

बिना यह चिंता किए बिना कि विधि को कहा जा रहा है या नहीं, क्योंकि यह ऑटो वेट फंक्शन या कुछ और के रूप में परिभाषित है।

उत्तर:

जवाब के लिए 3 № 1

यदि आप कई से दुखी हैं awaitएस या thens, आप थोड़ा "अनुक्रम" सहायक बना सकते हैं:

let _seq = async fns => fns.reduce((p, f) => p.then(f), Promise.resolve(null))

और इस तरह इसका इस्तेमाल करें:

result = await seq(
_ => cool.updateCoolThings(),
_ => _.aCoolThing(),
_ => _.anotherCoolThing(),
_ => _.coolThingsAreUs(),
)

जो लगभग # 2 स्निपेट है।