2015-11-05 45 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 

});