Javascript 递归异步延迟承诺重叠

Javascript 递归异步延迟承诺重叠,javascript,recursion,scope,promise,closures,Javascript,Recursion,Scope,Promise,Closures,用例如下:我希望每隔X毫秒查询一个URL,直到得到肯定的答复 我试图在JS(node)中实现这一点,但遇到了多个此类请求的问题。 如果我只启动其中一个“连锁呼叫”,一切正常 但如果我尝试并行运行多个,那么“最后一个赢了”(第一个永远不会解决)。我似乎是在引用同一个对象或其他东西,但我想不出来 注意“masterCounter”和“id”变量是如何被覆盖的,尽管它们是通过值作为参数传递的 以下是工作代码(其中“第二个”胜过“第一个”): (如果安装请求包,则可以使用节点运行) 以及输出: FIRS

用例如下:我希望每隔X毫秒查询一个URL,直到得到肯定的答复

我试图在JS(node)中实现这一点,但遇到了多个此类请求的问题。 如果我只启动其中一个“连锁呼叫”,一切正常

但如果我尝试并行运行多个,那么“最后一个赢了”(第一个永远不会解决)。我似乎是在引用同一个对象或其他东西,但我想不出来

注意“masterCounter”和“id”变量是如何被覆盖的,尽管它们是通过值作为参数传递的

以下是工作代码(其中“第二个”胜过“第一个”):

(如果安装请求包,则可以使用节点运行)

以及输出:

FIRST masterCounter is 101
SECOND masterCounter is 201
FIRST requesting...
SECOND requesting...
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND masterCounter is 202
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND masterCounter is 202
SECOND requesting...
SECOND requesting...
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND masterCounter is 203
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND masterCounter is 203
SECOND requesting...
SECOND requesting...
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND masterCounter is 204
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND masterCounter is 204
SECOND requesting...
SECOND requesting...
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND masterCounter is 205
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND masterCounter is 205
SECOND requesting...
SECOND requesting...
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
SECOND done
body <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="hr"><head><meta content
第一个主计数器是101
第二个主计数器是201
首先请求。。。
第二个请求。。。
body您的问题是
回调
变量。这是必须的

var callback = function (error, response, body) { /*
^^^ */

总是避免这样的错误

var callback = function (error, response, body) { /*
^^^ */
function callback(error, response, body) {