2015-11-05 28 views
0

如果这是一个基本问题,我很抱歉,但我试图在node.js中实现一个应该等待通过对云api(photon.variable())的请求,可用变量的值为1.此变量不应每秒请求超过一次。我的第一次尝试包含在下面的示例代码中。尽管知道它根本不起作用,但我认为展示我希望实现的功能可能很有用。如何在node.js中等待云中可用的变量具有特定值

var photondata = 0; 
while (photondata < 1) 
{ 
    setTimeout(function() { 
    photon.variable("witok", function(err, data) { 
     if (!err) { 
      console.log("data: ", data.result); 
      photondata = data.result; 
     } 
     else console.log(err); 
    })}, 1000); 
} 

回答

1

既然你以前无法完成的循环异步的东西,传统的做法是创建一个功能,增加了自身setTimeout,只要需要,那么当它完成调用一些其他的功能。如果不使用Babel,您仍然需要在浏览器中执行此操作。

现在,您可以停止执行,并等待使用生成器函数时发生的事情(最新版本的Node现在支持)。有很多图书馆,会让你这样做,我会做广告ours :)

CL.run(function*() { 

    var photondata = 0; 
    while (true) { 

    yield CL.try(function*() { 
     var data = yield photon.variable("witok", CL.cb()); 
     console.log("data: ", data.result); 
     photondata = data.result; 
    }, function* (err) { 
     console.log(err.message); 
    }); 

    if (photondata >= 1) break; 

    yield CL.sleep(1000); 

    } 

    // do whatever you need here 

}); 
相关问题