Javascript信号器客户端不等待服务器响应

Javascript信号器客户端不等待服务器响应,javascript,signalr,Javascript,Signalr,我的中心是:(简化) 我的Javascript客户端: function GetString(z){ bip.server.BPF("gS",z).done(function(result){array.push(result)}); } //calling function to get string GetString("select top 1 u from users"); alert(array); //This returns nothing.... //functio

我的中心是:(简化)

我的Javascript客户端:

function GetString(z){
    bip.server.BPF("gS",z).done(function(result){array.push(result)});
}

//calling function to get string

GetString("select top 1 u from users");
alert(array);

//This returns nothing....
//function GetString, returns after .done() pushes result on array 
如何等待调用中心返回的JavaScript函数的服务器响应


尝试使用
$.Deferred,$.when()。然后
,但没有结果。

删除
GetString()
函数您的javascript操作如下:

bip.server.BPF("gS",z).done(function(result){array.push(result)});
alert(array);
.done()
函数是异步执行的。这意味着脚本将直接跳转到下一条语句,即
alert()

基本上,您希望返回延迟对象,并使用该对象处理回调:

function GetString(z){
    return bip.server.BPF("gS",z);
}

GetString("select top 1 u from users").done(function(r) {
   array.push(r);
   alert(array);
});

我已经测试过了,但不起作用。SignalrHub返回延迟完成(result)bip.server.BPF(“gS”,“selectblablabla…”)的结果。完成(函数(r){!这里是结果…});如果我调用bip.server.BPF(“gS”,“selectblablabla….”),而不调用.done(),则永远无法搜索结果。(抱歉我的英语不好)继续:在GetString(“从用户中选择前1U”).done(函数(r){array.push(r);});//!!!!!!!!r是一个延迟对象,不是预期的字符串!!!!
function GetString(z){
    return bip.server.BPF("gS",z);
}

GetString("select top 1 u from users").done(function(r) {
   array.push(r);
   alert(array);
});