2017-08-29 100 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

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

相关问题