我正在使用以下背靠背命令在我的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”。显然我不理解我认为我理解的东西。为什么将函数包装在函数中而只是直接引用函数作为成功/失败回调不起作用?
答案 0 :(得分:2)
这就是我们调用函数并获得结果const resolveEnpoints = async () => {
return new Promise((resolve, reject) => {
request({
url: config.sandboxEndpoint,
headers: {
'Accept': 'application/json'
}
}, (err, response) => {
if (err) {
reject(err);
}
let payload = JSON.parse(response.body);
resolve(payload);
});
});
};
的方法
这就是我们获取函数var a = initWhipData(10);
我的意思是,你试图调用initWhipData函数,然后将其结果作为参数传递,而不是传递它的引用。
这就是为什么首先调用initWhipData(10)和initWhipData(20)然后返回的值将作为参数传递。
var a = initWhipData;
以下是如何传递回调函数的示例..
window.resolveLocalFileSystemURL(fPath + "whipdata.json",
initWhipData(10),
initWhipData(20)
);