我开发这个样子文件阅读服务:如何获取函数返回结果?
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
@sheriffderek从我的控制台日志中,它显示它正在执行代码。但是它比数据变量的执行控制台日志更慢。 – user1995781
你需要查看Javascript中的_promises_是什么。 '$ cordovaFile.readAsText()'方法返回一个promise,它们是异步的,这意味着你不能假设你传递给它的'.then()'方法的函数中的代码会立即运行。如果这没有意义,请查看Promise如何工作。 – GregL