Node.js 15正式版发布

中止控制器 N-API版本7 npm 7 未处理的拒绝默认值 QUIC V8 8.6 
1、中止控制器
const ac = new AbortController();ac.signal.addEventListener('abort', () => console.log('Aborted!'),{ once: true });ac.abort();console.log(ac.signal.aborted); //Prints True
2、N-API 7
Object obj = Object::New(env);obj["foo"] = String::New(env, "bar");
napi_status status;napi_value object, string;status = napi_create_object(env, &object);if (status != napi_ok) {napi_throw_error(env, ...);return;}status = napi_create_string_utf8(env, "bar", NAPI_AUTO_LENGTH, &string);if (status != napi_ok) {napi_throw_error(env, ...);return;}status = napi_set_named_property(env, object, "foo", string);if (status != napi_ok) {napi_throw_error(env, ...);return;}
3、npm 7
4、未处理的拒绝默认值
5、QUIC
const { createQuicSocket } = require('net');
'use strict';const key = getTLSKeySomehow();const cert = getTLSCertSomehow();const { createQuicSocket } = require('net');// Create the QUIC UDP IPv4 socket bound to local IP port 1234const socket = createQuicSocket({ endpoint: { port: 1234 } });socket.on('session', async (session) => {// A new server side session has been created!// The peer opened a new stream!session.on('stream', (stream) => {// Let's say hellostream.end('Hello World');// Let's see what the peer has to say...stream.setEncoding('utf8');stream.on('data', console.log);stream.on('end', () => console.log('stream ended'));});const uni = await session.openStream({ halfOpen: true });uni.write('hi ');uni.end('from the server!');});// Tell the socket to operate as a server using the given// key and certificate to secure new connections, using// the fictional 'hello' application protocol.(async function() {await socket.listen({ key, cert, alpn: 'hello' });console.log('The socket is listening for sessions!');})();
6、V8 8.6
Promise.any()-MDN
AggregateError——MDN
new AggregateError(errors[, message])
Promise.any([Promise.reject(new Error("some error")),]).catch(e => {console.log(e instanceof AggregateError); // trueconsole.log(e.message); // "All Promises rejected"console.log(e.name); // "AggregateError"console.log(e.errors); // [ Error: "some error" ]});
try {throw new AggregateError([new Error("some error"),], 'Hello');} catch (e) {console.log(e instanceof AggregateError); // trueconsole.log(e.message); // "Hello"console.log(e.name); // "AggregateError"console.log(e.errors); // [ Error: "some error" ]}
String.prototype.replaceAll()-MDN
const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';const regex = /dog/gi;console.log(p.replaceAll(regex, 'ferret'));// expected output: "The quick brown fox jumps over the lazy ferret. If the ferret reacted, was it really lazy?"console.log(p.replaceAll('dog', 'monkey'));// expected output: "The quick brown fox jumps over the lazy monkey. If the monkey reacted, was it really lazy?"
升级

评论
