Javascript 模拟信号机同步工作
我使用JavaScript客户端从SignalrHub获取数据,工作正常,但在某些情况下需要模拟同步。例如,在JavaScript客户端的For循环中从数据库获取参数。这是我的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
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();
}