javascript resolveLocalFileSystemURL触发成功和失败回调

时间:2017-11-01 16:29:13

标签: javascript cordova callback file-exists cordova-plugin-file

我正在使用以下背靠背命令在我的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”。显然我不理解我认为我理解的东西。为什么将函数包装在函数中而只是直接引用函数作为成功/失败回调不起作用?

1 个答案:

答案 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)
);
相关问题