You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fastify中return语句与rep.send()是否等效?代码执行疑问

关于Express里res.send()和return的区别,以及你的代码疑问

先给你说清楚:res.send()本身不会让代码停止运行,要是不写return,后面的代码该执行还是会执行。

看你这段代码:

if (!transaction) {
    res.code(204).send({ message: 'No previously used bank found' })
}

res.code(200).send(transaction)

当transaction不存在的时候(也就是!transaction为真),第一个res.send()会执行,但因为没加return,代码会接着往下跑,执行到下面的res.code(200).send(transaction)。这时候就会出问题——HTTP协议规定一个请求只能返回一个响应,Express会直接抛出“不能重复发送响应”的错误。

所以正确的做法是在第一个res.send()前面加上return,这样执行到这里就会直接终止当前函数,不会再跑后面的代码:

if (!transaction) {
    return res.code(204).send({ message: 'No previously used bank found' })
}

res.code(200).send(transaction)

最后总结两点:

  • 只调用res.send()不会停住代码,后续代码继续执行很可能导致重复响应的错误
  • 加return是为了立刻终止函数,避免后面的代码再去操作同一个响应对象

内容的提问来源于stack exchange,提问作者Dally

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:37:38