1

我正在使用以下背靠背命令在我的科尔多瓦应用程序中进行简单的文件检查:

function initWhipData(dir) {
   console.log("DIR = " +dir) ;
}

//Test:
window.resolveLocalFileSystemURL(fPath + "whipdata.json",
   function() { console.log("TEST File Exists")},
   function() { console.log("TEST File doesnt exist") }
) ;

//Actual:
window.resolveLocalFileSystemURL(fPath + "whipdata.json",
   initWhipData(10),
   initWhipData(20)
) ;

在控制台中。我得到以下信息,但不明白为什么:

TEST File Exists  // expected
Dir = 10  // expected
Dir = 20  // not expected

在第二次文件检查中,成功和失败都被调用。我做错了什么......而且不理解?

然后我尝试了以下方法并得到了预期的结果:

window.resolveLocalFileSystemURL(fPath + "whipdata.json",
   function() {initWhipData(10)},
   function() { initWhipData(20)} 
) ;

它打印出“Dir = 10”。显然我不理解我认为我理解的东西。为什么将我的函数包装在一个函数中,而直接将函数引用为成功/失败回调不起作用?

4

1 回答 1

2

这就是我们调用函数并获取结果的var a = initWhipData(10);
方式 这就是我们获取函数引用的方式var a = initWhipData;

我的意思是,您正在尝试调用 initWhipData 函数,然后将其结果作为参数传递,而不是传递它的引用。
这就是为什么首先调用 initWhipData(10) 和 initWhipData(20) 然后返回值作为参数传递的原因。

window.resolveLocalFileSystemURL(fPath + "whipdata.json",
   initWhipData(10),
   initWhipData(20)
);

以下是有关如何传递回调函数的示例。

window.resolveLocalFileSystemURL(fPath + "whipdata.json",
   successCallback, //If success then call this function
   errorCallback //If error happen then call this function
);

function successCallback(){
    initWhipData(10)
}
function errorCallback(){
    initWhipData(20)
}
于 2017-11-03T06:23:28.213 回答