Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio readTextAsync WinJS无法工作_Visual Studio_Winjs - Fatal编程技术网

Visual studio readTextAsync WinJS无法工作

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

我需要从文件中读取内容。我有一个全局变量fileDate,我想把内容放到这个变量中,但是当我调用load方法时,这个变量是未定义的

    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);
    });