调用Node.js库中其他函数的函数问题

时间:2018-05-10 18:33:09

标签: javascript node.js

我是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中没有更好的方法来做库吗?

1 个答案:

答案 0 :(得分:1)

在Node库中,所有函数都是公共对象(modules.exports)的成员。因此,当您想要从另一个函数调用一个函数时,您必须指定您正在调用this.someFunction,而不只是someFunction(后者将查找全局可访问的someFunction,不存在)。

使事情进一步复杂化,但是,如果你要在你的情况下尝试,this将引用不正确的上下文,因为该调用嵌套在几个异步回调(req.onres.on)。因此你有同样的问题。

要解决此问题,请尝试在var self=this;功能的开头添加getTextWeatherUsingStationUsingRequest,然后将tempToFahrenheit函数调用更改为self.tempToFahrenheit

(变量self将通过名为closure的功能在回调中正确传播。this不会这样做,因为它是一个始终引用当前上下文的保留关键字。 )