我尝试使用sonos(https://www.npmjs.org/package/sonos)来返回我在网络上的一系列玩家。我想使用sonos.search函数在启动时为我找到玩家,然后在连接到网络的情况下用新玩家更新阵列。
由于sonos.search是异步的,因此在启动时将所有播放器添加到阵列之前,其余代码将执行。如何在启动时阻止代码运行sonos.search 10秒钟,在网络上构建一组播放器然后监听/搜索新播放器并在连接时添加到阵列?
-
答案 0 :(得分:2)
尝试反对nodejs的异步行为通常不是解决问题的最佳方法。
如果您希望在sonos加载播放器之后执行其余代码,则应该从异步函数的回调中调用它。
如果您确实要在启动其余代码之前等待10秒,则可以使用setTimeout()函数。
setTimeout(function() {
codeToBeExecutedAfter10Secs();
}, 10000);
答案 1 :(得分:0)
您可以尝试:
https://github.com/luciotato/waitfor
进行同步通话。它适用于光纤,有许多方法可以“等待”某些东西。
编辑:使用它的一个小例子,假设你使用mongoskin来访问数据
var wait =require('wait.for');
wait.launchFiber(function(){
var obj = getAsyncData();
});
function getAsyncData(){
return wait.forMethod(db.collection('data'), 'find');
}
我认为MeteorJS框架使用这个库来处理同步功能。