在一行 JavaScript 中创建 blob URL 后撤销它
Revoking blob URL after Creating it in a single line JavaScript
我只是想知道如何以不同的方式做到这一点。现在我已经创建了一行代码,其中包含 NO 分号或新行。我想说清楚,这根本没有任何错误。该代码创建了一个由 <h1>Example</h1>
组成的 HTML blob。这包含在承诺中,因此我可以访问结果。得到结果后,我使用 &&
运算符来避免使用分号。 blob url 立即打开,然后在 2000 毫秒后撤销。如果您有解决方案可以缩短此时间或在没有 ;
或换行的情况下以不同方式完成,请通知我 :)
new Promise(r=>r(URL.createObjectURL(new Blob(['<h1>Example</h1>'],{type:'text/html'})))).then(u=>{window.open(u)&&setTimeout(t=>URL.revokeObjectURL(u)),2000})
我想说清楚,这是关于语法的。
编辑:
事实证明,感谢@Bergi,这很容易通过 IIFE 实现。使用 IIFE,有点让你向后思考。我做了一些编辑。此函数的工作原理是:
- 正在为
<h1>Example</h1>
创建 HTML Blob URL
- 它通过一个做两件事的 IIFE 来运行 URL
- 打开URL
- 为 window 设置事件侦听器以加载,然后撤销 URL
((u,e=open(u))=>e.onload=_=>URL.revokeObjectURL(u))(URL.createObjectURL(new Blob(['<h1>Example</h1>'],{type:'text/html'})))
编辑(不需要 e
):
(u=>open(u).onload=_=>URL.revokeObjectURL(u))(URL.createObjectURL(new Blob(['<h1>Example</h1>'],{type:'text/html'})))
当你只需要 IIFE to introduce variables:
时,没有理由使用承诺
(u => (
window.open(u),
setTimeout(_ =>
URL.revokeObjectURL(u))
, 2000)
))(URL.createObjectURL(
new Blob(['<h1>Example</h1>'],{type:'text/html'})
))
(对于可读格式感到抱歉。删除您认为合适的空格。)
我只是想知道如何以不同的方式做到这一点。现在我已经创建了一行代码,其中包含 NO 分号或新行。我想说清楚,这根本没有任何错误。该代码创建了一个由 <h1>Example</h1>
组成的 HTML blob。这包含在承诺中,因此我可以访问结果。得到结果后,我使用 &&
运算符来避免使用分号。 blob url 立即打开,然后在 2000 毫秒后撤销。如果您有解决方案可以缩短此时间或在没有 ;
或换行的情况下以不同方式完成,请通知我 :)
new Promise(r=>r(URL.createObjectURL(new Blob(['<h1>Example</h1>'],{type:'text/html'})))).then(u=>{window.open(u)&&setTimeout(t=>URL.revokeObjectURL(u)),2000})
我想说清楚,这是关于语法的。
编辑:
事实证明,感谢@Bergi,这很容易通过 IIFE 实现。使用 IIFE,有点让你向后思考。我做了一些编辑。此函数的工作原理是:
- 正在为
<h1>Example</h1>
创建 HTML Blob URL
- 它通过一个做两件事的 IIFE 来运行 URL
- 打开URL
- 为 window 设置事件侦听器以加载,然后撤销 URL
((u,e=open(u))=>e.onload=_=>URL.revokeObjectURL(u))(URL.createObjectURL(new Blob(['<h1>Example</h1>'],{type:'text/html'})))
编辑(不需要 e
):
(u=>open(u).onload=_=>URL.revokeObjectURL(u))(URL.createObjectURL(new Blob(['<h1>Example</h1>'],{type:'text/html'})))
当你只需要 IIFE to introduce variables:
时,没有理由使用承诺(u => (
window.open(u),
setTimeout(_ =>
URL.revokeObjectURL(u))
, 2000)
))(URL.createObjectURL(
new Blob(['<h1>Example</h1>'],{type:'text/html'})
))
(对于可读格式感到抱歉。删除您认为合适的空格。)