Visual studio readTextAsync WinJS无法工作
我需要从文件中读取内容。我有一个全局变量fileDate,我想把内容放到这个变量中,但是当我调用load方法时,这个变量是未定义的Visual studio readTextAsync WinJS无法工作,visual-studio,winjs,Visual Studio,Winjs,我需要从文件中读取内容。我有一个全局变量fileDate,我想把内容放到这个变量中,但是当我调用load方法时,这个变量是未定义的 var filename = "dataFile.txt"; var fileDate; WinJS.UI.Pages.define("index.html", { ready: function (element, options) { loadDate(); console.log
var filename = "dataFile.txt";
var fileDate;
WinJS.UI.Pages.define("index.html", {
ready: function (element, options) {
loadDate();
console.log("main" + fileDate);
this.fillYearSelect();
},
function loadDate() {
return localFolder.getFileAsync(filename).then(function (file) {
return Windows.Storage.FileIO.readTextAsync(file).then(function (fileContent) {
fileDate = fileContent;
console.log("fileContent " + fileContent);
},
function (error) {
console.log("Błąd odczytu");
});
},
function (error) {
console.log("Nie znaleziono pliku");
});
}
对不起我的英语:)不要忘记javascript是异步的,当您调用
console.log(“main”+fileDate)
时,方法loadDate()
尚未完成,这就是为什么您的fileDate尚未定义的原因
你可以用承诺来实现这一点
以下是基于您的代码的示例:
var filename = "dataFile.txt";
var fileDate;
var applicationData = Windows.Storage.ApplicationData.current;
var localFolder = applicationData.localFolder;
function loadDate() {
return new Promise(function (onComplete, onError) {
localFolder.getFileAsync(filename).then(function (file) {
Windows.Storage.FileIO.readTextAsync(file).then(function (fileContent) {
fileDate = fileContent;
console.log("fileContent " + fileContent);
onComplete(fileDate);
},
function (error) {
console.log("Error on readTextAsync");
onError(error);
});
},
function (error) {
console.log("Error on getFileAsync");
onError(error);
});
});
}
现在loadDate()
返回一个承诺,您现在可以使用.then()
方法在loadDate()
完成后执行操作
loadDate().then(function (fileDate) {
console.log("Content : " + fileDate);
},
function (error) {
console.log(error);
});