2017-08-29 89 views
0

我有一種情況,用戶將圖像設置爲URL或將字節轉換爲Blob對象URL。我的理解是,爲了防止資源泄漏,我應該在更改後釋放blob對象URL,但我不確定是否正確檢查舊URL的類型。目前,我這樣做的方式是檢查網址是否以'blob:'開頭。下面是一個說明,它的確似乎工作的玩具例子功能:檢查URL是否是createObjectURL調用結果的正確方法?

var url; 

for (i = 0; i < 5; i++) { 
    var oldurl = url; 
    console.log('i = ' + i) 
    if (i == 0 || i == 2 || i == 3) { 
     console.log('Switching to Object URL') 
     url = URL.createObjectURL(new Blob(new Uint8Array(0), 
              {type: 'image/png'})); 
    } else { 
     console.log('Switching to URL') 
     url = 'https://example.com/example-image.png'; 
    } 

    if (oldurl && oldurl.startsWith('blob:')) { 
     console.log('Freeing old object url') 
     URL.revokeObjectURL(oldurl); 
    } 
} 

這是這樣做的正確方法?有沒有更好的方法來做到這一點?

我會注意到,我已經打過電話URL.revokeObjectURL上是對象的URL,它似乎做工精細字符串,所以這也是我不清楚多少重要的是我正確地判斷是否需要網址被釋放。

注意:這是一個TypeScript腳本,但我認爲這個問題在JavaScript中同樣有效,所以我用兩個標記。

回答

0

你說得對,我認爲目前根本沒有別的辦法。

+0

而實際上我看不到任何不同的方式需要.. –

相關問題