设置和访问asynchronous函数中的全局对象

这样的代码:

fileArray = ['a.json','b.json','c.json'] dict = {} fileArray.map (f) -> fs.readFile f, (err, data) -> json.parse data, (k, v) -> dict[k] = v 

我想写dict对象到一个文件。 我如何等待所有的asynchronousfunction完成?

或者还有什么其他的办法来做到这一点?

你可以像这样手动完成

 fileArray = ['a.json','b.json','c.json'] dict = {} counter = 0 fileArray.map (f) -> fs.readFile f, (err, data) -> counter +=1 json.parse data, (k, v) -> dict[k] = v if counter >= fileArray.length fs.writeFile("mydict.txt", dict.toString()) 

或者使用asynchronous库(例如https://github.com/caolan/async

 fileArray = ['a.json','b.json','c.json'] dict = {} counter = 0 read = (file)-> fs.readFile f, (err, data) -> json.parse data, (k, v) -> dict[k] = v fns = ((do (file) -> read(file)) for file in fileArray) #use the async lib async.parallel fns, -> fs.writeFile "mydict.txt", json.stringify(dict) 

请注意,我没有testing过这个。