2016-06-23 53 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