Browse Source

Fix blob.slice unnecessary warning message

Ben Hsieh 7 years ago
parent
commit
81bdb0ecb9
1 changed files with 12 additions and 5 deletions
  1. 12
    5
      src/polyfill/Blob.js

+ 12
- 5
src/polyfill/Blob.js View File

@@ -58,8 +58,10 @@ export default class Blob extends EventTarget {
58 58
    * @param  {any} data Content of Blob object
59 59
    * @param  {any} mime Content type settings of Blob object, `text/plain`
60 60
    *                    by default
61
+   * @param  {boolean} defer When this argument set to `true`, blob constructor
62
+   *                         will not invoke blob created event automatically.
61 63
    */
62
-  constructor(data:any, cType:any) {
64
+  constructor(data:any, cType:any, defer:boolean) {
63 65
     super()
64 66
     cType = cType || {}
65 67
     this.cacheName = getBlobName()
@@ -75,6 +77,7 @@ export default class Blob extends EventTarget {
75 77
       let size = 0
76 78
       this._ref = String(data.getRNFetchBlobRef())
77 79
       let orgPath = this._ref
80
+
78 81
       p = fs.exists(orgPath)
79 82
             .then((exist) =>  {
80 83
               if(exist)
@@ -121,10 +124,14 @@ export default class Blob extends EventTarget {
121 124
       log.verbose('create Blob cache file from file path', data)
122 125
       this._ref = String(data).replace('RNFetchBlob-file://', '')
123 126
       let orgPath = this._ref
124
-      p = fs.stat(orgPath)
125
-            .then((stat) =>  {
127
+      if(defer)
128
+        return
129
+      else {
130
+        p = fs.stat(orgPath)
131
+              .then((stat) =>  {
126 132
                 return Promise.resolve(stat.size)
127
-            })
133
+              })
134
+      }
128 135
     }
129 136
     // content from variable need create file
130 137
     else if(typeof data === 'string') {
@@ -217,7 +224,7 @@ export default class Blob extends EventTarget {
217 224
     let resPath = blobCacheDir + getBlobName()
218 225
     let pass = false
219 226
     log.debug('fs.slice new blob will at', resPath)
220
-    let result = new Blob(RNFetchBlob.wrap(resPath), { type : contentType })
227
+    let result = new Blob(RNFetchBlob.wrap(resPath), { type : contentType }, true)
221 228
     fs.slice(this._ref, resPath, start, end).then((dest) => {
222 229
       log.debug('fs.slice done', dest)
223 230
       result._invokeOnCreateEvent()