我有一种情况,用户将图像设置为 URL 或转换为 blob 对象 URL 的字节。我的理解是,为了防止资源泄漏,我应该在 blob 对象 URL 更改时释放它们,但我不确定我是否正确检查了旧 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的字符串并且它似乎工作正常,所以我也不清楚我正确确定是否需要释放 URL 有多重要。
注意:这是一个 TypeScript 脚本,但我认为这个问题在 Javascript 中同样有效,所以我已经标记了两者。