ठीक है तो मेरे पास ऐसा कोड है

giveaways.forEach( x => {
    if (x.extraData) {
      const guild = client.guilds.cache.get(x.extraData.server)
      const channel = guild.channels.cache
        .filter((channel) => channel.type === 'text')
        .first()
      channel.createInvite().then( inv => { // returns promise
     embed.addField(`Join Requirement Giveaway:`, `**[This Server](${inv})**`)
      })
    } else {
      embed.addField(`Normal Giveaway:`,`**[${x.prize}](https://discord.com/channels/${x.guildID}/${x.channelID}/${x.messageID})**`)
    }
  })

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

0
Zero 31 मई 2021, 09:22
आपका क्या मतलब है "मुझे पता है कि हम एसिंक्रोनस में मूल्यों को अधिलेखित करने में असमर्थ हैं"? ऐसा क्यों होगा?
 – 
Christian
31 मई 2021, 09:25
बस इस बारे में थोड़ा स्पष्ट होने के लिए कि मेरा क्या मतलब है यदि आप एक कंस्ट्रक्टर को एक वादे के साथ ओवरराइट/मूल्य जोड़ना चाहते हैं तो var z; x.forEach( async y => { z = 1}) कहें जो संभव नहीं होगा
 – 
Zero
31 मई 2021, 09:28
बेशक यह संभव है। यहां मुद्दा समय का है, क्योंकि वादे के अलावा और कुछ नहीं जानता कि कब यह परिवर्तन होगा। विचार करें कि आपका CPU केवल कुछ मिलीसेकंड में कितना कुछ कर सकता है
 – 
Thomas
31 मई 2021, 09:34
समझ में आया, इसके आसपास काम करने का तरीका क्या है, नीचे दिए गए उत्तर को छोड़कर
 – 
Zero
31 मई 2021, 09:35

1 उत्तर

सबसे बढ़िया उत्तर

आप Promise.all को मानचित्र के साथ उपयोग कर सकते हैं

इस कदर

Promise.all(giveaways.map((x) => new Promise((resolve, reject) => {
  // ~~ doing something
  somePromises.then((inv) => {
    embed.addField(/*~~~*/)
    resolve();
  })
})))
  .then(() => {
    // next things..
  });
2
Yonghoon Lee 31 मई 2021, 09:47
ठीक है, उचित लगता है, धन्यवाद!
 – 
Zero
31 मई 2021, 09:31
जवाब के लिए धन्यवाद। मैं कोड पर प्रतीक्षा हटा दूंगा :)
 – 
Yonghoon Lee
31 मई 2021, 09:46
4
हां लेकिन नहीं। यह कोड वादों और प्रतीक्षा और "नया वादा" -एंटीपैटर्न का एक अजीब मिश्रण है। map: .map(async (x) => { ... const inv = await channel.createInvite(); ... }) में async फ़ंक्शन का बेहतर उपयोग करें
 – 
Thomas
31 मई 2021, 09:47