gpt4 book ai didi

javascript - Express:将 res.json 作为参数传递时出错

转载 作者:行者123 更新时间:2023-11-30 10:16:24 25 4
gpt4 key购买 nike

我有这样的东西:

...
var someService = function(next) {
var result = {"some": "json"};
next(result);
};

app.get('/someRoute', function (req, res) {
someService(function (result) {
res.json(result);
});
});
...

我想将 get 更改为:

app.get('/someRoute', function (req, res) {
someService(res.json);
});

但它给了我:

TypeError: Cannot call method 'get' of undefined at res.json (.../node_modules/express/lib/response.js:185:22) at someService

我想问题出在范围上。这是什么?

最佳答案

问题似乎是 Javascript 中方法的范围在语法上是绑定(bind)的。

在 res.json 方法中,它引用了 this。当像 res.json(/* some arg */) 这样调用时,this 的计算结果为 res。当您将 res.json 作为回调传入时,例如 someService(res.json);this 不再绑定(bind)到 res.

您可以将其更改为 someService(res.json.bind(res)); 以获得您想要的结果,方法是将 this 显式绑定(bind)到 res.

MDN 文章:

this

Function.prototype.bind

关于javascript - Express:将 res.json 作为参数传递时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23459985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com