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