Javascript 返回在函数中设置值的全局数组
我创建了另一个帖子,但我没有编写正确的代码,也没有说明问题所在。 这里是完整的代码。 我在create函数中声明“myarray”。我将success函数中的值推送到数组中,并在create函数中返回 问题是调用create函数时没有返回任何值。我想这是我的数组的作用域,但我不知道如何解决这个问题Javascript 返回在函数中设置值的全局数组,javascript,cordova,Javascript,Cordova,我创建了另一个帖子,但我没有编写正确的代码,也没有说明问题所在。 这里是完整的代码。 我在create函数中声明“myarray”。我将success函数中的值推送到数组中,并在create函数中返回 问题是调用create函数时没有返回任何值。我想这是我的数组的作用域,但我不知道如何解决这个问题 function Create(targetdir) { var myarray = new Array(); //Get a list of fi
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;
}
函数创建(targetdir)
{
var myarray=新数组();
//获取目录中的文件名列表
requestFileSystem(LocalFileSystem.PERSISTENT,0,onSuccess,onError);
函数onSuccess(文件系统)
{
var entry=fileSystem.root;
getDirectory(targetdir,{create:false,exclusive:false},successdir,fail);
//filesystem2是目标目录
函数successdir(fileSystem2)
{
var directoryReader=fileSystem2.createReader();
directoryReader.readEntries(成功、失败);
功能成功(条目)
{
var i;
对于(i=0;i使用回调:
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);
}
}
使用回调:
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);
}
}
因为您正在调用一个异步方法,所以您正在创建的方法alwasy将不返回任何内容,因为窗口.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指定的回调方法,因为您正在调用一个异步方法您正在创建的方法alwasy将不返回任何内容,因为窗口。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指定的回调方法我得到了以下错误:ReferenceError:找不到变量:callbackcallback是要创建的第二个参数。我得到了以下错误:ReferenceError:找不到变量:callbackcallback是要创建的第二个参数。感谢您的回复,但我在本例中没有详细说明在这里,您返回数组,以便我可以在脚本中使用它。很抱歉,我没有看到第二个参数。感谢您的回复,但我不想在此示例中详细说明您返回数组以便我可以在脚本中使用它。很抱歉,我没有看到第二个参数。