Heim  >  Artikel  >  Web-Frontend  >  [Node.js] Der Unterschied zwischen Synchronisation und Asynchronität

[Node.js] Der Unterschied zwischen Synchronisation und Asynchronität

帅杰杰
帅杰杰Original
2020-05-09 21:57:25190Durchsuche

Um Node.js für Dateioperationen verwenden zu können, müssen Sie zunächst require('fs') verwenden, um die Dateisystemvorlage zu laden. Der letzte Parameter der asynchronen Methode ist eine vollständige Rückruffunktion (Rückruffunktion). Die an die Rückruffunktion übergebenen Parameter hängen im Allgemeinen von der Methode selbst ab, der erste Parameter ist jedoch immer eine Ausnahme (err). Wenn die Methode erfolgreich ausgeführt wird, ist der erste Parameter null oder undefiniert. Bei der Ausführung mit synchronen Methoden werden alle Ausnahmen sofort ausgelöst. Wir können Try oder Catch verwenden, um Ausnahmen zu behandeln und Fehlerinformationen anzuzeigen.

Gibt ein Beispiel für eine asynchrone Methode, bei der sich eine Hello-Datei im tmp-Ordner befindet.

Dieser Code löscht die Hallo-Datei im tmp-Verzeichnis. Wenn der Löschvorgang erfolgreich ist, werden die Informationen zum erfolgreichen Löschen in der Konsole gedruckt.

引入fs模块
const fs=require("fs");
//异步操作读取文件
fs.unlink('./tmp/hello',(err)=>{
    if(err) throw err;
    console.log('成功删除hello文件');
});

Sie können auch asynchrone Methoden verwenden, um die gleiche Funktion zu erreichen.

引入fs模块
const fs=require("fs");
//同步操作读取文件
fs.unlinkSync('./tmp/hello');
console.log('成功删除hello文件');

Asynchrone Operationsmethoden können keine erfolgreiche Ausführung garantieren, daher ist die Reihenfolge der Dateioperationen während der Codeausführung sehr wichtig.

Zum Beispiel: Der folgende Code verursacht einen Fehler

//重命名hello文件为world文件
fs.rename('./tmp/hello','./tmp/world',(err)=>{
  if(err) throw err;
  console.log('renamed complete');
});
//获取world文件的信息
fs.stat('./tmp/world',(err)=>{
  if(err) throw err;
    console.log(`stats:${JSON.stringify(stats)}`);
});

fs.stat wird vor fs.rename ausgeführt. Die richtige Methode ist Verwenden Sie zum Ausführen die Rückruffunktion.

Das Folgende ist die korrekte Verwendung von Rückruffunktionen zur Behandlung von Ausnahmen während der Programmausführung:

fs.rename('./tmp/hello','./tmp/world',(err)=>{
    if(err) throw err;
    fs.stat('./tmp/world',(err,stats)=>{
        if(err) throw err;
        console.log(`stats:${JSON.stringify(stats)}`);
    });
});

Hinweis: In einem großen System wird die Verwendung empfohlen asynchrone Methoden: Die Synchronisationsmethode führt dazu, dass der Prozess gesperrt wird. Im Vergleich zu synchronen Methoden sind asynchrone Methoden leistungsfähiger, schneller und blockieren weniger.

Das obige ist der detaillierte Inhalt von[Node.js] Der Unterschied zwischen Synchronisation und Asynchronität. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn