我是Node的新手。
我将函数库中的一堆前端移动到一个新的Node.js库中。
我知道你必须把它放在module.exports = {
中并且所有函数都必须采用以下格式: tempToFahrenheit:function(tempInC){
我正在调用我的其他脚本中的函数,但我遇到了相互调用函数的问题:
$ echo $PATH
/home/joe
$ $PATH<Press Esc Ctrl-e>
$ /home/joe
在这个文本的上方,你会看到一行试图在函数getTextWeatherUsingStationUsingRequest()中调用tempToFahrenheit()。我该如何做到这一点?你必须为Node.js设置函数的奇怪方法(散列权利?)这些函数似乎没有相互访问权。
另一个更普遍的问题。 Node.js的好处应该是你在前端和后端使用Javascript,并且你可以重用代码,就像在库中一样。但正如我们在这里看到的那样,我必须对代码进行相当大的(并且容易出错的)更改才能使它与Node一起使用。此外,我必须保留两个库的副本,一个前端和另一个节点。在Node中没有更好的方法来做库吗?
答案 0 :(得分:1)
在Node库中,所有函数都是公共对象(modules.exports
)的成员。因此,当您想要从另一个函数调用一个函数时,您必须指定您正在调用this.someFunction
,而不只是someFunction
(后者将查找全局可访问的someFunction
,不存在)。
使事情进一步复杂化,但是,如果你要在你的情况下尝试,this
将引用不正确的上下文,因为该调用嵌套在几个异步回调(req.on
和res.on
)。因此你有同样的问题。
要解决此问题,请尝试在var self=this;
功能的开头添加getTextWeatherUsingStationUsingRequest
,然后将tempToFahrenheit
函数调用更改为self.tempToFahrenheit
。
(变量self
将通过名为closure的功能在回调中正确传播。this
不会这样做,因为它是一个始终引用当前上下文的保留关键字。 )