2016-06-23 51 views
2

我試圖做一個簡單的函數來取得一個JavaScript FileEntry並將它「轉換」爲一個JavaScript File對象。我有這裏的基本功能:如何從函數內的回調中返回值?

function fileEntrytoFile(e){ 
    var f = 0; 

    e.file(function(file){ 
    f = file; 
    }); 
    return f; 
} 

f返回時仍然是0。如何返回由回調函數生成的File對象?

+2

你不能,假設'e.file'是異步的。相反,您可以返回一個將解析爲文件的承諾。 –

+0

你使用任何類似q的承諾庫嗎? –

回答

7

您將需要返回一個承諾,因爲FileEntry.file是異步的:以上

function fileEntrytoFile(e){ 
    return new Promise((resolve, reject) => e.file(resolve, reject)); 
} 

fileEntrytoFile(fileEntry) . then(file => console.log(file.name)); 

使用ES6箭頭的功能和ES6承諾。

+0

這是完美的。我正在觀看視頻以瞭解有關箭頭功能和Promise的信息!謝謝! – RickyAYoder