设置和访问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过这个。