2014-02-10 28 views
4

我執行復制粘貼功能到使用ClipboardData API的瀏覽器應用程序,as explained in this answer.HTML5和JavaScript:如何使粘貼處理完全/更加異步?

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採取DataTransferItem作爲參數,因此它可以做async本身就像它已經與blobs?
3)我運氣不好嗎?

回答

0

有沒有辦法使DataTransferItem :: getAsFile()方法異步?

No. It's specified同步。但是,完全沒有理由使這種異步 - 對文件的引用被快速構建,並且不包含任何數據剷除。就像input.files一樣,您可以同步獲得對尚未讀入文件的引用。

有沒有辦法讓FileReader採取DataTransferItem作爲參數,所以它可以做異步本身喜歡它與斑點已經這樣做?

不需要。它只需要item.getAsFile() blob,並且可以異步讀取它。