Javascript 模拟信号机同步工作

Javascript 模拟信号机同步工作,javascript,signalr,Javascript,Signalr,我使用JavaScript客户端从SignalrHub获取数据,工作正常,但在某些情况下需要模拟同步。例如,在JavaScript客户端的For循环中从数据库获取参数。这是我的javascript代码 var results = []; // empty array to hold results function test(){ var list = ['item 1','item 2,'item3',item 4'] for(var i = 0;i<list.length;i

我使用JavaScript客户端从SignalrHub获取数据,工作正常,但在某些情况下需要模拟同步。例如,在JavaScript客户端的For循环中从数据库获取参数。这是我的javascript代码

var results = []; // empty array to hold results

function test(){
var list = ['item 1','item 2,'item3',item 4']
    for(var i = 0;i<list.length;i++){
        // call to signalr hub
         $.connection.hub.start().done(function(){
            bip.server.getString( list[i] ).done(function(x){
              results.push(x)});
        });
       // end call signalr hub
    }
}
var结果=[];//用于保存结果的空数组
功能测试(){
变量列表=['item 1'、'item 2、'item3',item 4']
对于(var i=0;i尝试以下方法:

声明列表、结果和索引以跟踪数组

var results = []; // empty array to hold results
var list = ['item 1','item 2,'item3',item 4']
var currentndex = 0;
启动中心并注册客户端响应处理程序

function start()
{
   // register client callback for when it comes back from the server
   $signalrhubs.hub.client.serverResponse

   // do other initializing stuff
   $.connection.hub.start().done(callServer);

}
准备好后调用服务器,根据数组的长度检查索引并递增

function callServer()
{         
     if(currentIndex <= list.length)
     {
         bip.server.getString( list[currentIndex ]);                
         currentIndex += 1;
     }
}

不,您不想要同步行为。相反,您想要。
function serverResponse(x)
{
     results.push(x)
     callServer();
}