【发布时间】:2021-11-30 11:07:41
【问题描述】:
我在使用 fastify 时偶然发现了这段代码 sn-p。
module.exports = async function (fastify, opts) {
fastify.register(proxy, {
upstream: 'https://news.ycombinator.com/',
async preHandler(request, reply) {
if (request.query.token !== 'abc') {
throw fastify.httpErrors.unauthorized();
}
},
});
};
看起来它用两个参数调用fastify.register,第二个参数是一个对象。第一个字段是upstream,但我不知道接下来会发生什么。 async preHandler(request, reply)...之后的这个语法是什么?
【问题讨论】:
-
这是一种方法。
async表示它是一个异步方法体,所以它总是返回一个 promise 并启用await的使用。 -
这只是一种方法。与
{ preHandler: async function(request, reply) { ... } }- Method definitions - JavaScript | MDN 相同 -
@VLAZ 我正在查看 ECMAScript 语法规则,这些规则似乎需要
async function或async $methodName- 我不认为async $functionName是允许的。 -
您错过了
preHandler在对象中。隐含的函数也是如此。{async preHandler() {}} -
@Dai 这是一个简写的方法符号
{foo: function() {} }=={foo() {} }它几乎相同。不能使用new调用速记方法,否则与function() {}工作方式相同
标签: javascript node.js async-await fastify