2016-04-29 6 views
1

Ich muss eine Funktion erstellen, um eine Textdatei in einer Windows Universal JavaScript App zu laden, die eine Zeichenfolge nicht ein "Versprechen" zurückgibt.UWP JavaScript lokale Textdatei laden, ohne "asynchrone Aufrufe"

Dieser Code gibt ein "Versprechen" und keine Zeichenfolge zurück, also gibt es eine Möglichkeit, dies in eine Funktion einzubetten (die wartet und dann eine Zeichenfolge zurückgibt) oder eine andere Möglichkeit zum Laden einer Datei.

Ich brauche eine Funktion, die einen Dateinamen erhalten und einen String zurückgeben wird;

+0

Mögliches Duplikat [Wie kann ich die Antwort von einem asynchronen Aufruf zurückkehren?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -asynchroner Anruf) –

Antwort

1

Wie es in einem Kommentar erwähnt wurde, wie Sie mit asynchronen Aufrufen und insbesondere mit Versprechen umgehen, sollten Sie Ihre Architektur ändern: insbesondere Ihre interne Funktion sollte eine Verheißung anstelle von Wert zurückgeben.

function getFileContentAsync(fileName) { 
    var fileName = new Windows.Foundation.Uri("ms-appx:///" + fileName); 
    return Windows.Storage.StorageFile.getFileFromApplicationUriAsync(fileName).then(function (file) { 
     return Windows.Storage.FileIO.readTextAsync(file); 
    }); 
}); 

//usage 
getFileContentAsync(filename).then(function(fileContent){ 
    ... 
}); 

In der Praxis liegt es auch in Ihrer Verantwortung, mögliche Fehlerzustände zu verwalten, insbesondere im Umgang mit dem Dateisystem.

getFileContentAsync(filename).then(function processContent(fileContent){ 
    ... 
}, function processError(error){ 
    ... 
}); 
+0

Warum sollte es ein "Versprechen" anstelle eines "Wertes" zurückgeben, gab man keine Erklärung ab. Was ich wirklich will, ist eine Zeichenkette, also warum sollte ich es ein "Versprechen" zurückgeben, wenn das repetitive Code jedes Mal verursacht, wenn es angerufen wird. –

+0

1. Sie haben bereits mit Versprechen zu tun, sobald Sie *** Async-Funktionen verwenden. Funktionen, die Sie aufrufen (z. B. readTextAsync), geben Versprechen und keine Werte zurück. 2. Der Wert existiert einfach nicht in dem Moment, in dem Sie die Funktion aufrufen, deshalb müssen Sie Versprechungen mit Callback-Funktionen verwenden. – Konstantin

+0

Gibt es eine Möglichkeit, eine Datei zu laden, die keine Versprechungen verwendet? –

Verwandte Themen