Modul fs obsahuje slíbené metody od Node 11

To je rychlovka. 🙈

Při psaní skriptů Node.js, které používají fs modul, obvykle jsem používal util.promisify metoda, která slibuje metody souborového systému. Metody založené na slibech umožňují použití async/await a to usnadňuje uchopení a čtení kódu.

Dnes jsem se dozvěděl, že od Node.js 11 je fs modul poskytuje "slíbené" metody v promises vlastnictví. 🎉

// old way have using promise-based fs methods
const { readFile } = require("fs");
const { promisify } = require('util');
const promisifiedReadFile = promisify(readFile);

promisifiedReadFile(__filename, { encoding: "utf8" })
  .then(data => console.log(data));

// --------------------

// new way of using promise-based fs methods
// no util.promisify!!!
const { readFile } = require("fs").promises;
readFile(__filename, { encoding: "utf8" })
  .then(data => console.log(data));

Pomocí promises vlastnost, nyní můžete přeskočit krok k transformaci zpětných volání na sliby a není třeba používat promisify . To je skvělá zpráva pro zploštění některých zdrojových kódů a nasazení async/await !

fs/promises je k dispozici od Node.js 14

Aktualizace:Od Node.js 14 fs modul poskytuje dva způsoby, jak používat metody souborového systému založené na slibech. Sliby jsou dostupné prostřednictvím require('fs').promises nebo require('fs/promises') .

// Since Node.js v14: use promise-based fs methods
// no util.promisify!!!
const { readFile } = require("fs/promises");
readFile(__filename, { encoding: "utf8" })
  .then(data => console.log(data));

Jsem velmi nadšený z /promises přidání cesty, protože se zdá, že správci Node.js souhlasí s tímto způsobem, jak v budoucnu odhalit více metod založených na slibech stávajících modulů.

V Node.js v15 modul Časovače také poskytuje experimentální timers/promises balík. To znamená, že můžete udělat await setTimeout brzy – Node.js se vyvíjí a to znamená méně util.promisify a další kódování! 🎉

Pokud si chcete přečíst další tipy a triky pro Node.js, přejděte do sekce Node.js na mém blogu nebo se přihlaste k odběru mého newsletteru níže.