回答編集履歴

1

追加コメントへの対抗

2018/10/15 08:48

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -91,3 +91,53 @@
91
91
  どこかでZIPファイルをXMLファイルに解凍し終わるメソッドを実行してresolveに繋げるような設計が必要になります。
92
92
 
93
93
  StreamもPromiseに負けず実装が難解なので多分普通に2〜3日かかると思いますが頑張ってくださいね。
94
+
95
+
96
+
97
+ ---
98
+
99
+
100
+
101
+ > setIntervalとかでxmlが作られているかチェックし続けるみたいなのってどうでしょうか...
102
+
103
+
104
+
105
+ 却下です。
106
+
107
+ あまりにもイケてないですし、多分速攻で0バイトのファイルを作って少しずつZIPの解凍結果を流し込んでいく実装になってる可能性があって、動くかどうかわかりません。
108
+
109
+
110
+
111
+ [https://nodejs.org/api/stream.html](https://nodejs.org/api/stream.html)
112
+
113
+ 本家のドキュメントをちらっと見ましたが、ReadableStreamにはendやcloseのイベントが使えますので、
114
+
115
+ 下記のようなコードで行けるかも知れませんね。
116
+
117
+ 完全に空で書いてて動くかは分かりませんが試してみてください。
118
+
119
+
120
+
121
+ ```JavaScript
122
+
123
+ function convertToXML(filePath) {
124
+
125
+ // filePathは既に引数として束縛済なので、別に何もしなくてもアクセス可能
126
+
127
+ return new Promise((resolve, reject) => {
128
+
129
+ fs
130
+
131
+ .createReadStream(filePath)
132
+
133
+ .pipe(unzip.Extract({ path: XMLFileDirectory }))
134
+
135
+ .on('end', resolve)
136
+
137
+ .on('error', reject);
138
+
139
+ });
140
+
141
+ }
142
+
143
+ ```