Верно ли мое понимание?
Нет, если a
, b
, c
и d
возвращают обещания (неявно, потому что они также async
функции, или явно), что, по-видимому, они делают, если вы используете await
на них.async
/ await
не делают асинхронный код синхронным (это невозможно), они позволяют вам писать ваш код в его логическом потоке, а не в временном потоке.
Если вы удалите эти await
s, вы измените логику кода: вместо запуска a
до завершения, затем b
, затем c
, затем d
, будет начать все они, и все они будут перекрываться.Так что вместо этого:
const rnd = () => Math.floor(Math.random() * 800);
const runner = name => new Promise(resolve => {
console.log(name + " start");
setTimeout(() => {
console.log(name + " end");
resolve();
}, rnd())
});
const a = () => runner("a");
const b = () => runner("b");
const c = () => runner("c");
const d = () => runner("d");
(async() => {
await a();
await b();
await c();
await d();
console.log("after all calls");
})(); // In real code you'd catch errors
.as-console-wrapper {
max-height: 100% !important;
}
Вы получите это:
const rnd = () => Math.floor(Math.random() * 800);
const runner = name => new Promise(resolve => {
console.log(name + " start");
setTimeout(() => {
console.log(name + " end");
resolve();
}, rnd())
});
const a = () => runner("a");
const b = () => runner("b");
const c = () => runner("c");
const d = () => runner("d");
(async() => {
a();
b();
c();
d();
console.log("after all calls");
})(); // In real code you'd catch errors
.as-console-wrapper {
max-height: 100% !important;
}
Вероятно, это не то, для чего предназначен этот код, независимо от того, находится ли он на сервере или в однопользовательском приложении.
С точки зрения использования различных методов "Синхронизации" в Node.js (fs.readFileSync
вместо fs.readFile
и т. Д.), Тогда да, если вам не нужен процесс Node.js, чтобы делать что-то еще во время чтенияфайл (например, он не должен выполнять никакой другой обработки, такой как обработка других запросов в качестве сервера), вы можете использовать их в этой ситуации с однопользовательским приложением.