Antwort

3

Sie sind nicht alles von Read_Json_File Rückkehr, so bekommen Sie nicht definiert - Sie Daten aus dem Rückruf sind Rückkehr, die nicht in irgendetwas zur Folge hat. Um stattdessen async/await zu verwenden, müssen Sie fs.readFile promiziieren, da dies noch nicht geschehen ist. Dann werden Sie in der Lage sein verwenden async/await:

function readJSONFile() { 
    return new Promise((resolve, reject) => { 
    fs.readFile('import.json', 'utf-8', (err, data) => { 
     if (err) reject(err); 
     resolve(JSON.parse(data)); 
    }); 
    }); 
} 

Await erfordert ein tatsächlichen Versprechen zu warten. Was dies tut, ist ein Versprechen, auf das man warten muss. So warten wir, bis wir resolve nennen - was passiert, wenn wir die JSON fertig geladen:

let json = await readJSONFile(); 
console.log(json); 

Hier stellen wir readJSONFile nennen. Dies gibt eine Zusage zurück, die auflöst, wenn die JSON-Datei geladen wird, und ermöglicht scheinbar synchrone Ausführung von asynchronem Code.

+0

ja jetzt ist es wie ein Traum dank funktioniert, aber ich hörte ich async/await ohne Versprechen nutzen können. ist das wahr? –

+0

@OFSTTP Warten * erwartet ein Versprechen *. Async/erwarten ist nur syntaktischer Zucker für Versprechen. Sobald Sie es herunterkochen, async/erwarten Sie ist nur Versprechen - Sie können nicht nur Async-Code synchron ausführen. Sie werden immer Versprechungen zu einem gewissen Grad verwenden müssen, und async/erwarten Funktionen werden schließlich mehr Versprechen und Thesen. – Li357

+0

@OFSTTP Siehe: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await –

1

Sie verpassten Versprechen zu lösen und abzulehnen.

Verwenden Sie wie folgt.

function Read_Json_File() { 
    return new Promise((resolve,reject)=> { 
      fs.readFile('import.json','utf-8',(err, data) => { 
       if (err) reject(err); 
       json_data = JSON.parse(data); 

       resolve(json_data); 

      }); 
    } 
}); 
-1

versuchen es:

 function Read_Json_File() { 
      return new Promise(resolve,reject => { 
      fs.readFile('import.json','utf-8',(err, data) => { 
       if (err) reject(err); 
       json_data = JSON.parse(data); 

       resolve(json_data); 
      }); 

    } 
+0

Dies ist eine exakte Kopie von die beiden vorherigen Antworten, diesmal mit schlechtem Einzug und ohne erklärenden Text. –

Verwandte Themen