【发布时间】:2015-09-30 01:29:01
【问题描述】:
我正在开发一个文件读取服务,如下所示:
angular.factory('fileService', fileService);
function fileService($cordovaFile){
var service = {
readFile: readFile
};
return service;
///////////////
function readFile(path, file){
$cordovaFile.readAsText(path, file)
.then(function (success) {
console.log("read file success");
console.log(success);
return success;
}, function (error) {
alert("Fail to read file:"+error);
console.log("Fail to read file");
console.log(error);
return false;
});
}
}
然后像这样使用它:
var data = fileService.readFile(cordova.file.dataDirectory,filename);
console.log(data) //return undefined
问题是返回数据失败。我怎样才能把数据返回回来?
【问题讨论】:
-
您的
return service似乎在readFile函数可以运行之前将您跳出函数。我也看不到函数调用上的点符号是如何工作的/但这可能只是我的误解...... -
@sheriffderek 从我的控制台日志中,它显示它正在执行代码。但速度较慢,并且在数据变量的执行控制台日志之后。
-
你需要查看 Javascript 中的 promises 是什么。
$cordovaFile.readAsText()方法返回一个承诺,它们是异步的,这意味着你不能假设你传递给它们的.then()方法的函数中的代码会立即运行。如果这没有意义,请查看 Promise 的工作原理。
标签: javascript angularjs cordova callback