2017-03-17 1 views

Répondre

0

J'essaie de comprendre ce que vous voulez dire - je pense fondamentalement que vous voulez un moyen de se connecter au début d'un appel et la fin d'un appel (pour charger et décharger un spinner)?

Je l'ai fait de deux manières différentes - d'abord de façon ponctuelle (premier exemple), puis de façon plus systématique (le deuxième exemple). J'espère que l'un d'entre eux sera ce dont vous avez besoin.

$.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) 

Si vous ne souhaitez pas que - peut-être parce que vous appelez des méthodes de moyeu dans des centaines de différentes sections de codes, puis il y a d'autres trucs qui sont un peu plus compliqué. Voyons voir:

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.