次のようなコード:
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
オブジェクトをファイルに書き込みたい。すべての非同期関数が終了するのを待つにはどうすればよいですか?
または、これを行う他の方法はありますか?
次のようなコード:
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
オブジェクトをファイルに書き込みたい。すべての非同期関数が終了するのを待つにはどうすればよいですか?
または、これを行う他の方法はありますか?
このように手動で行うことができます
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())
または、非同期ライブラリを使用します (例: 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)
私はこれをテストしていないことに注意してください。