为什么这两个函数调用不相等
Why are these two function calls not equal to each other?
对不起,如果标题太模糊,我不知道如何更好地解释它。
为什么在这种情况下使用匿名函数调用有效:
Team
.findAll()
.then(function(teams) {
res.send(teams);
});
但是将res.send
直接传递到.then()
中,它不起作用:
Team
.findAll()
.then(res.send);
这会导致此错误:
Possibly unhandled TypeError: Cannot read property 'method' of undefined
at res.send (/opt/web/projects/node_modules/express/lib/response.js:83:27)
at Promise._settlePromiseAt (/opt/web/projects/node_modules/sequelize/lib/promise.js:76:18)
at process._tickCallback (node.js:442:13)
这两者不是相等的吗? res.send
只接受一个参数,所以它不像是将一些奇怪的未知参数传递给函数。
.then()
方法希望你给它传递一个函数,因为它(最终)会调用它。如果你只是传递一个(非函数)值,那是不可能的。
打电话给.then()
的目的是说:"手术完成后,请这样做。
编辑 — 啊,好的,对不起。在这种情况下,问题是当您传递res.send
时,send
方法将丢失上下文。也就是说,当 Promise 机制调用 send
函数时,它不会知道res
的值。
你可以这样做:
.then(res.send.bind(res))
通过这样做,可以确保在最终调用send
时,将调用它,以便this
将成为对res
对象的引用。
相关文章:
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何调用两个函数是一种html输入类型
- 为什么这两个函数调用不相等
- 在 javascript 中通过继承调用两个函数
- iMacros iim播放如何调用两个函数
- 在onload上调用两个函数不起作用
- 如果在javaScript中的按钮单击事件中调用两个函数会发生什么
- 在同一事件处理程序上调用两个函数
- 如何通过按 F11 调用两个函数
- 提交时调用两个函数
- 具有两个函数调用的内联点击
- 在 JS 中,如果通过卸载调用两个函数,浏览器以什么顺序处理它们
- 我们可以调用两个函数 onClick 事件吗?
- 在ng单击上调用两个函数的角度
- 在 node.js 中的单个文件中调用两个函数
- 两个不同视图上的两个按钮调用相同的函数 AngularJS
- Javascript-在Onsubmit调用两个函数
- 对两个函数调用angular.extend()意味着什么
- 计算两个函数调用之间经过的时间
- Javascript两个函数调用时为空文本,然后在执行时停止