2017-03-17 3 views

Antwort

0

Ich versuche herauszufinden, was du meinst - ich denke im Grunde willst du einen Weg in den Anfang eines Anrufs und das Ende eines Anrufs (zum Laden und Entladen eines Spinner) einhängen?

Ich habe dies auf zwei verschiedene Arten getan - zuerst als einmaliges (erstes Beispiel) und dann systematischer (das zweite Beispiel). Hoffentlich wird einer von ihnen das sein, was Sie brauchen.

$.connection.myHub.server.hubMethod().done(function() { 
           //called on success 
          }).fail(function (e) { 
           //called on failure - I don't recommend reading e 
          }).always(function() { 
           //called regardless 
           spinner.close(); 
}); 
spinner.open(); // must be triggerd AFTER call incase exception thrown (due to connection not being up yet) 

Wenn Sie nicht wie das - vielleicht, weil Sie Hub Methoden in Hunderten von verschiedenen Abschnitten von Codes nennen, dann gibt es andere Tricks, die etwas komplizierter sind. Mal sehen:

function SetupSpinnerOnCallToSignalrMethod(hubServer, method, spinnerStartCallback, spinnerEndCallback) { 
    var prevFunc = hubServer[method]; 
    hubServer[method] = function() { 
     var ret = prevFunc.apply(this, arguments); 
     spinnerStartCallback(); // must be triggerd AFTER call incase exception thrown (due to connection not being up yet) 
     ret.always(function() { 
      spinnerEndCallback(); 
     }); 
     return ret; 
    }; 
} 

//then call this for each method 
SetupSpinnerOnCallToSignalrMethod($.connection.myHub.server, 
            "hubMethod", 
            function() { spinner.open(); }, 
            function() { spinner.close(); } 
); 

//the server call should then work exactly as before, but the spinner open and close calls are invoked each time. 
Verwandte Themen