回答編集履歴

1

追記

2020/04/29 19:47

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -15,3 +15,81 @@
15
15
 
16
16
 
17
17
  ご質問コードの[Compressor.js](https://github.com/fengyuanchen/compressorjs) による圧縮機能だけをPromise化するのが良いと思います
18
+
19
+
20
+
21
+ ----
22
+
23
+ 追記)以下、試していませんので、答案に過ぎませんが…。
24
+
25
+
26
+
27
+ ```javascript
28
+
29
+ const promisfiedCompressor = ( file, q=0.6 ) => {
30
+
31
+ // Promise を返却
32
+
33
+ return new Promise((resolve, reject) => {
34
+
35
+
36
+
37
+ new Compressor(file, {
38
+
39
+ quality: q,
40
+
41
+ success(blob) {
42
+
43
+ resolve(blob); // Promise を 成功終了
44
+
45
+ },
46
+
47
+ error(err) {
48
+
49
+ reject(err); // Promise を 異常終了
50
+
51
+ }
52
+
53
+ }); // Compressor.js
54
+
55
+
56
+
57
+ });
58
+
59
+ }
60
+
61
+
62
+
63
+ /*
64
+
65
+ 動作確認
66
+
67
+ // {Promise}.then() の場合
68
+
69
+ promisfiedCompressor(file) // Promise が返却される
70
+
71
+ .then( blob => {
72
+
73
+ firebase
74
+
75
+ .storage()
76
+
77
+ .ref()
78
+
79
+ .child("work/" + uid + "/1/" + name)
80
+
81
+ .put(blob);
82
+
83
+ });
84
+
85
+
86
+
87
+ // await を使う方法も考えられる(割愛)
88
+
89
+ */
90
+
91
+
92
+
93
+ // module として export
94
+
95
+ ```