Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 线程局部变量的NodeJS事件等价物?_Node.js - Fatal编程技术网

Node.js 线程局部变量的NodeJS事件等价物?

Node.js 线程局部变量的NodeJS事件等价物?,node.js,Node.js,我正在尝试一个框架的设计,但我对NodeJS及其基于事件编程的实现还不熟悉。在其他环境中,我会使用线程局部变量来完成我要做的事情,NodeJS中是否有等价的东西 显然,在NodeJ中很少使用线程,而是使用事件。我搜索的是一个全局变量,一旦某个变量设置了它,它将继续具有该值,因为回调是从设置的原始变量调用的,而不是从其他变量调用的。这有意义吗 我想做的是设计一个库/框架,所以,我目前没有任何代码,但例如,假设有这样一个函数: async function doSomething() {

我正在尝试一个框架的设计,但我对NodeJS及其基于事件编程的实现还不熟悉。在其他环境中,我会使用线程局部变量来完成我要做的事情,NodeJS中是否有等价的东西

显然,在NodeJ中很少使用线程,而是使用事件。我搜索的是一个全局变量,一旦某个变量设置了它,它将继续具有该值,因为回调是从设置的原始变量调用的,而不是从其他变量调用的。这有意义吗

我想做的是设计一个库/框架,所以,我目前没有任何代码,但例如,假设有这样一个函数:

    async function doSomething() {
       await connect()
       await doSomethingElse()
       await doSomethingElseAgain()
    }
我希望
connect()
将连接存储在线程局部变量上,以便
doSomethingElse()
doSomethingElseAgain()
使用相同的连接,即使有两个
doSomething()
线程在运行(但我知道它们不是线程,而是从
doSomething()
的两次执行中一个接一个地运行的事件)


我不想从
connect()传递任何参数
到其他函数。我已经知道如何做到这一点,但打破了我试图提出的设计。

我不是100%确定,因为我仍在探索,但我相信我已经找到了解决方案,它就是名为的包。如果我找到更多的方法,我会发布更多。

你通常会在一个关闭中使用局部变量,这将是acc仅可在该闭包中使用essible(其中包含事件处理程序)。有关如何执行此操作的详细信息,请显示实际的nodejs代码。@jfriend00:我知道闭包是如何工作的,但我不希望我的库/框架的用户传递局部变量,这正是我试图避免的。目前没有代码,但如果这有帮助,我可以模拟一些东西。@jfriend00:好了,我补充了由于Javascript的事件驱动、异步特性以及它如何在一个线程中运行所有代码(WorkerThreads除外,WorkerThreads是一个完全不同的对话),线程局部变量的概念在这里并不适用。您所有的代码都在同一个线程中运行,因此即使有线程局部变量,它们也不会帮助您。这就是为什么您使用闭包和局部变量,或者使函数成为公共对象的方法,并将公共数据存储在该对象中,或者传递上下文对象。@jfriend00:这不是唯一的方法。有cls钩子和异步钩子,它们不依赖于局部变量。请记住这是一个实验性的特性,不能保证当前的设计或API永远存在。