我正在使用以下背对背命令在cordova应用中执行简单的文件检查:
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”。显然,我没有理解我以为自己理解的东西。为什么在仅将函数直接引用为成功/失败回调不起作用的情况下将函数包装到函数中起作用?
最佳答案
这就是我们调用函数并获取结果的方式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)
}