2016-05-02 129 views
2

它更容易只是爲了看看代碼:嵌套異步/等待功能

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

此代碼返回第3行的錯誤,說有近readDir一個意外標記。我不明白爲什麼這不起作用。

回答

3

事實證明,我忘了將我的箭頭函數聲明爲異步。

修改後的代碼是

async function addFiles(dir,tree) { 
    return (await readDir(dir)) 
    .map(async name => {await readDir(dir); return name;}) // error here 
} 
+0

哎,以供將來參考,我很好奇的實現您正在使用此爲了什麼?從「閱讀它」,看起來你正在給一個樹結構並閱讀它下面的目錄?只是尋找上下文,作爲未來的例子:-) –

+0

當然......當我完成所有錯誤時,我會發布它:) –

+0

據我瞭解,這是一個不理想的方式來做'map '用'async/await'。如果你'等待'一個'Promise.all',你可以使用更多的並行處理。我做了一個僞代碼jsfiddle來說明如何使用我認爲是你的用例:https://jsfiddle.net/ry93b8r3/ – Brandon