我的情况是用户将图像设置为URL或转换为blob对象URL的字节。我的理解是,为了防止资源泄漏,我应该在更改时释放blob对象URL,但我不确定我是否正确检查旧URL的类型。目前,我这样做的方法是检查网址是否以'blob:'
开头。这是一个玩具示例函数,它表明它确实似乎有效:
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)
你是对的,我认为目前没有别的办法了。