Na podstawie zabaw z prostym modułem fs uczymy się różnicy między synchronicznymi i asynchronicznymi funkcjami node.js. Do dzieła.
Zakładam, że folder files już mamy, w nim plik lorem.txt i poniższy kod rozumiemy bez problemu:
var fs = require('fs');
const path = require("path");
var fpath = path.join(__dirname, 'files', 'lorem.txt');
Asynchroniczna funkcja exists sprawdzi, czy plik istnieje przyjmując callback do wykonania:
var fs = require('fs');
const path = require("path");
var fpath = path.join(__dirname, 'files', 'lorem.txt');
fs.exists(fpath, (exists) => {
console.log(exists ? 'Found' : 'Not found!');
});
//Found
Funkcja naprawdę jest asynchroniczna:
var fs = require('fs');
const path = require("path");
var fpath = path.join(__dirname, 'files', 'lorem.txt');
fs.exists(fpath, (exists) => {
console.log(exists ? 'Found' : 'Not found!');
});
console.log("I run first!");
// I run first!
// Found
To teraz synchroniczna wersja:
var fs = require('fs');
const path = require("path");
var fpath = path.join(__dirname, 'files', 'lorem.txt');
if(fs.existsSync(fpath))
console.log("Found");
console.log("I run after sync code...")
// Found
// I run after sync code...
W node musimy sobie z tego zdawać sprawę i ogarniać te różnice.