5

如本答案所述,我正在使用 ClipboardData API 将复制粘贴功能实现到浏览器应用程序中。

提供了文件数据的FileReader::readAsDataURL(blob)异步读取,非常棒。

var items = (event.clipboardData || event.originalEvent.clipboardData).items;
var reader = new FileReader();
reader.onload = function(event){
   /*add item (i.e. image) to page*/}; //callback

var blob = items[0].getAsFile(); //not async
reader.readAsDataURL(blob); //async

问题:
1)有没有办法使DataTransferItem::getAsFile()方法异步?
2) 有没有办法FileReader将 aDataTransferItem作为参数,这样它就可以async像处理 blob 一样做它自己?
3)我运气不好?

4

1 回答 1

0

有没有办法使 DataTransferItem::getAsFile() 方法异步?

,它被指定为同步的。但是,绝对没有理由使这种异步 - 快速构建对文件的引用并且不包含任何数据铲除。就像input.files同步让您引用尚未读入的文件一样。

有没有办法FileReader将 aDataTransferItem作为参数,以便它可以像处理 blob 一样执行异步操作?

不,它只需要item.getAsFile()blob,并且可以异步读取它。

于 2014-03-06T16:55:24.857 回答