以下代码给出了一个相互矛盾的答案。 数组是全局但功能范围没有?我不明白。 这是代码
var pictures = new Array();
var app = {
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
function(fileSystem) {
fileSystem.root.getDirectory("DCIM/Camera/", {create: false},
function(dataDir) {
var directoryReader = dataDir.createReader();
directoryReader.readEntries(
function(entries){
var i;
for (i=0; i<entries.length; i++) {
pictures[i] = entries[i].fullPath;
}
console.log(pictures.length + ' ---- in');
}, fail)
}, fail);
}, fail);
console.log(pictures.length + ' ---- out');
... 当图片进入函数时,webconsole值= 176
当图片输出该功能时,webconsole值= 0
为什么?
提前致谢
答案 0 :(得分:0)
这里的问题是FileSystem API调用是异步的。
例如,如果您运行代码:
var i = 0;
setTimeout(function() {
i = 10;
console.log('i in: ' + i);
}, 100);
console.log('i out: ' + i);
你会看到我的行为与你所看到的相似,因为setTimeout发生在&#34; console.log之后(&#39; i out:&#39; + i) ;&#34 ;.同样的概念适用于您正在使用的FileSystem调用。