等待 invocation/method 到 return javascript 信号器中的值

Wait for invocation/method to return a value in javascript signalr

我不明白为什么我的代码不等待对 return 值的调用。 试着把它变成一个单独的函数,仍然是同样的错误。 看起来我无法访问 .done 函数。

主要代码
JS:

var connection = new signalR.HubConnectionBuilder().withUrl("/rouletteHub").build();
function HandleBet(event, color){
    var amount = parseInt(document.getElementById("amount").value);
    var actualPoints = 0;
    
    connection.invoke("GetPtsFromServer").then(function (pts) {
        actualPoints = parseInt(pts);
    })
    
    console.log(actualPoints);
    if (isNaN(amount)){
        ErrorNotANumber();
        return;
    }
    
    if (amount < 0){
        ErrorNegativeNumber();
        return;
    }
    //console.log(amount);
    //console.log(actualPoints)
    if (amount > actualPoints){
            NotEnoughPoints();
            return;
        }
    if (amount > 0){
            connection.invoke("PlaceBet", color.toString(), amount).then(function () {
                PlacedBetSuccess(GetColor2(color), amount);  
                }, function (err) {
                    PlacedBetError();
                })
        }
    event.preventDefault();
}

C#:

public int? GetPtsFromServer()
        {
            if (Context.User?.Identity != null && !Context.User.Identity.IsAuthenticated) return null;

            if (Context.User == null) return null;
            var dcId = Context.User.Claims.FirstOrDefault(c => c.Type == "urn:discord:id")?.Value;

            return DataWrapper.HelpForTypes.GetPts(Convert.ToUInt64(dcId));
        }

当使用 .done 而不是 .then 时会抛出错误
控制台:

Uncaught TypeError: connection.invoke(...).done is not a function
    at HandleBet (Roulette:420)
    at HTMLButtonElement.<anonymous> (Roulette:469)

JS:

connection.invoke("GetPtsFromServer").done(function (pts) {
        actualPoints = parseInt(pts);
    });

已通过使 HandleBet 异步并在 connection.invoke 之前插入 await 来修复。