2016-05-02 12 views
9

के बजाय वादा मैं इस कोडअतुल्यकालिक नक्शा समारोह है कि के रिटर्न का इंतजार मूल्य

async function addFiles(dir,tree) { 
    return (await readDir(dir)) 
    .map(async (name) => {await readDir(dir); return name;}) 
} 

है लेकिन दुर्भाग्य से, यह सिर्फ वादों का एक समूह देता है, क्योंकि वहाँ के नक्शे में async समारोह पर इंतजार कर रहे थे नहीं है। मैं सोच रहा हूं कि उपर्युक्त कोड में मैप किए गए फ़ंक्शन का इंतजार करने का कोई तरीका है या नहीं। आप Bluebird उपयोग कर रहे हैं

+3

मेरा मानना ​​है कि साथ इस क्लीनर, छोटे वाक्य विन्यास का उपयोग कर सकते हैं 'Promise.all वापसी ((का इंतजार readdir (dir))। मानचित्र (...)); 'काम करना चाहिए। यकीन नहीं है कि इसे 'Promise.all (...) 'का इंतजार करना है। –

+0

अच्छी सोच! धन्यवाद! –

उत्तर

29

async function addFiles(dir,tree) { 
    const files = await readDir(dir) 
    await Promise.all(files.map(async (name) => {await readDir(dir); return name;}) 
} 
2

कोशिश आप Promise.map

async function addFiles(dir, tree) { 
    const files = await readDir(dir); 
    return Promise.map(files, async (name) => { await readDir(dir); return name; }); 
} 
+11

यह छोटा कैसे है? – Stephen

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