我创建了另一篇文章,但我没有准确写出正确的代码以及问题所在。 所以这里是完整的代码。 我在create函数中声明了“myarray”。我将success函数中的值推送到数组并返回create create函数。
问题是我在调用create函数时没有得到任何值。我认为这是我的阵列的范围,但我不确切知道如何解决这个问题。
function Create(targetdir)
{
var myarray = new Array();
//Get a list of file names in the directory
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onError);
function onSuccess(fileSystem)
{
var entry=fileSystem.root;
entry.getDirectory(targetdir, {create: false, exclusive: false}, successdir, fail);
//filesystem2 is the target dir
function successdir(fileSystem2)
{
var directoryReader = fileSystem2.createReader();
directoryReader.readEntries(success, fail);
function success(entries)
{
var i;
for (i=0; i<entries.length; i++)
{
myarray.push(entries[i].toURI());
}
}
}
}
return myarray;
}
答案 0 :(得分:1)
使用回调:
function Create(targetdir, callback)
{
var myarray = new Array();
//Get a list of file names in the directory
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onError);
function onSuccess(fileSystem)
{
var entry=fileSystem.root;
entry.getDirectory(targetdir, {create: false, exclusive: false}, successdir, fail);
//filesystem2 is the target dir
function successdir(fileSystem2)
{
var directoryReader = fileSystem2.createReader();
directoryReader.readEntries(success, fail);
function success(entries)
{
var i;
for (i=0; i<entries.length; i++)
{
myarray.push(entries[i].toURI());
}
}
}
// call callbqack
callback(myarray);
}
}
然后:
Create(whatever, function (myarray) {
// do something with my array
});
答案 1 :(得分:0)
因为你正在调用异步方法,所以你创建方法alwasy将不会返回任何内容,因为window.requestFileSystem
仍在执行他的工作。您可以执行以下操作
function Create(targetdir)
{
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onError);
function onSuccess(fileSystem)
{
var myarray = new Array();
// fill myarray
// use myarray or skip the fill array and use it directly
}
}
或使用@IAbstractDownvoteFactor
指定的回调方法