2015-07-15 5 views
1

Я пытаюсь понять команду fs.statSync в Node.js. Я прочитал по этому вопросу Check synchronously if file/directory exists in Node.js, что он проверит, существует ли файл синхронно. Я не понимаю, что это значит, в чем разница между проверкой, существует ли она синхронно и проверяет, существует ли она асинхронно.Что значит проверить, существует ли файл синхронно?

ответ

2

Основное различие между синхронным и асинхронным - это то, что async не ждет. Вы должны научиться писать код совершенно новым способом, чтобы все происходило в правильном порядке.

Необходимо изучить, как это сделать, но это может быть немного изгиб мозга сначала.

fs.readFileSync(file); // Stops and waits for completion. 
console.log("This will always print after fs.readFileSync."); 

fs.readFile(file, function callback(err, data) { // Doesn't stop but will run the callback when it HAS read the file. 
    if (err) throw err; // File doesn't exist. 
    console.log(data); 
}); 
console.log("This will print before fs.readFile finishes, probably, it might not, but it might, you never quite know."); 
0

Это означает, что выполнение текущей «нити» замерзнет на время операции.

1

Синхронно означает, что ваш код ждет, пока он не получит результат. В вашем потоке ничего не происходит, пока вы не получите этот результат от fs.statSync(). Ни один ваш другой код не работает. В основном вы заблокировали программу.

Асинхронно означает, что функция возвращается сразу, и ваш код может продолжать работать, но вы не знаете, что результат сразу. Вместо этого результат предоставляется вам в функции обратного вызова, которая запускается позже.

1

Синхронно означает, что ваш поток будет блокироваться, пока файловая система не обнаружит, существует ли файл или нет.

Если вы сделаете это асинхронно, вы все равно спросите файловую систему, но файловая система сможет сделать это в фоновом режиме, чтобы ваш поток продолжал работать. Как только файловая система знает, существует ли файл или нет, он, вероятно, вызовет функцию обратного вызова в вашем коде, чтобы уведомить вас об этом или уведомить вас каким-либо другим способом, не блокируя поток выполнения.

Смежные вопросы