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

时间:2015-01-24 00:37:21

标签: javascript signalr

我的中心是:(简化)

public string BPF(string m1, string m2)
    {
        r = BiPoint4Clases.BiPoint4.getString(BP4Engine.Startup.cnxString, m2);// this gets a String from SQL Server accordig query passed on m2 hub parameter.
        return r;
}  
catch(Exeption e)
     {
      // manage exeptions. ....
     } 

我的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().then,但没有结果。

1 个答案:

答案 0 :(得分:0)

删除javascript运行的GetString()函数:

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);
});