Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

185
Vistas
How to invoke awaiting js fuction in razor pages c#

I'm using SignalR. I want to send updating request by websocket for each elements in foreach to update timer. But i'm getting error.Maybe connection can not get in time create connection. Is i need to use await ti start() function?

My context of SignalR is: main.js

 "use strict";
var connection = new signalR.HubConnectionBuilder().withUrl("/main").build();

async function start() {
    try {
        await connection.start();
    } catch (err) {
        console.log(err);
    }
};

async function ItemStatusRequest(id) {
    connection.invoke("ItemStatusRequest", id).catch(function (err) {
        return console.error(err.toString());
    });
}

my html code:

@model IEnumerable<AuctionWebApp.Models.AuctionItemViewModel>

@{
    ViewData["Title"] = "Index";
}
<script src="~/js/signalr/dist/browser/signalr.min.js"></script>
<script src="~/js/main.js"></script>

<script type="text/javascript">
    await start();
</script>

<table class="table">
    <thead>
        ...
    </thead>
    <tbody>
@foreach (var item in Model) {
        <tr>
            <td>
                <p id=@item.Id value=@item.Id>@(item.Id)</p>
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @*timer*@
                <div id=clock@(item.Id) class="countdown">
                <span class="hours countdown-time"></span>
                <span class="countdown-text">:</span>
                <span class="minutes countdown-time"></span>
                <span class="countdown-text">:</span>
                <span class="seconds countdown-time"></span>
                <span class="countdown-text"></span>
                </div>

                <script defer type="text/javascript">
                    ItemStatusRequest(@(item.Id))
                </script>
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.CurrentPrice)
            </td>
            <td>
                @item.StartTime.ToLocalTime();
            </td>
            <td>
                status
            </td>
        </tr>}
    </tbody>
</table>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

I solved this problem by calling start function on page lodaing.

connection.start().then(function ()
My functiong calling after connectiong has start by using js .then

At the end of html:

<script> 
    start(@Json.Serialize(Model.Select(x => x.Id.ToString()).ToArray()));
</script>

At SignalR-side I'm handle like this:

function start(arrId) {
    connection.start().then(function () {
        arrId.forEach(id => connection.invoke("ItemStatusRequest", id).catch(function (err) {
            return console.error(err.toString());
        }))
        event.preventDefault();
    }).catch(function (err) {
        return console.error(err.toString());
    });

};

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda