← Cloudflare Workers / workers / runtime-apis / nodejs
util
promisify/callbackify
promisify и callbackify API в Node.js предоставляют способ связать модель программирования на основе Promise с моделью на основе колбэков.
promisify метод позволяет принять функцию обратного вызова в стиле Node.js и преобразовать её в асинхронную функцию, возвращающую Promise:
import { promisify } from "node:util";
function foo(args, callback) {
try {
callback(null, 1);
} catch (err) {
// Errors are emitted to the callback via the first argument.
callback(err);
}
}
const promisifiedFoo = promisify(foo);
await promisifiedFoo(args);Так же, как и promisify, callbackify преобразует асинхронную функцию, возвращающую Promise, в функцию обратного вызова в стиле Node.js:
import { callbackify } from 'node:util';
async function foo(args) {
throw new Error('boom');
}
const callbackifiedFoo = callbackify(foo);
callbackifiedFoo(args, (err, value) => {
if (err) throw err;
});callbackify и promisify упрощают решение всех сложностей, связанных со связкой callback-функций и promise.
См. документация Node.js для callbackify ↗ и документация Node.js для promisify ↗, где это описано подробнее.
util.types
util.types API предоставляет надежный и эффективный способ проверки того, являются ли значения экземплярами различных встроенных типов.
import { types } from "node:util";
types.isAnyArrayBuffer(new ArrayBuffer()); // Returns true
types.isAnyArrayBuffer(new SharedArrayBuffer()); // Returns true
types.isArrayBufferView(new Int8Array()); // true
types.isArrayBufferView(Buffer.from("hello world")); // true
types.isArrayBufferView(new DataView(new ArrayBuffer(16))); // true
types.isArrayBufferView(new ArrayBuffer()); // false
function foo() {
types.isArgumentsObject(arguments); // Returns true
}
types.isAsyncFunction(function foo() {}); // Returns false
types.isAsyncFunction(async function foo() {}); // Returns true
// .. and so onПодробнее о util.types, см. документация Node.js для util.types ↗.
util.MIMEType
util.MIMEType предоставляет удобные методы, упрощающие работу с MIME-типы ↗. Например:
import { MIMEType } from "node:util";
const myMIME = new MIMEType("text/javascript;key=value");
console.log(myMIME.type);
// Prints: text
console.log(myMIME.essence);
// Prints: text/javascript
console.log(myMIME.subtype);
// Prints: javascript
console.log(String(myMIME));
// Prints: application/javascript;key=valueПодробнее о util.MIMEType, см. документация Node.js для util.MIMEType ↗.