Maison  >  Questions et réponses  >  le corps du texte

Quels sont les moyens de mettre fin aux requêtes JS ?

J'ai rencontré un problème similaire lors de l'entretien. L'idée générale est que lors du chargement de la page, certaines ressources du fichier js seront chargées à l'aide de balises de script si ces ressources ne sont pas demandées pendant une longue période, comment terminer manuellement la requête ?

Je sais que les requêtes Ajax ont une méthode d'abandon. Je me demande si l'intervieweur souhaite poser cette question et existe-t-il un autre moyen de mettre fin à la requête ?

typechotypecho2670 Il y a quelques jours1003

répondre à tous(3)je répondrai

  • 我想大声告诉你

    我想大声告诉你2017-06-28 09:30:55

    Merci pour l'invitation.
    Comme @小Stream l’a dit, c’est le temps mort.

    L'idée approximative de mise en œuvre est la suivante :

    var sequence = ['foo', 'bar', 'baz', 'base', 'ball', 'hello', 'world', '100k more'],
        start = Date.now();
    
    setTimeout(function _worker() {
        do {
           var element = sequence.shift();
           // do something with element
        } while( sequence.length && (Date.now() - start < 100) );
    
        if( sequence.length )
            setTimeout(_worker, 25);
    }, 25);

    Dans l'exemple ci-dessus, le chargement de la file d'attente est effectué à des intervalles de 25 millisecondes et le temps de chargement est inférieur à 100 ms.

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-28 09:30:55

    Ce qu'il faut examiner, c'est le délai d'attente de chargement des ressources

    répondre
    0
  • typecho

    typecho2017-06-28 09:30:55

    Le chargement de

    <script> est toujours synchrone (blocage) et ne peut pas être affecté par les opérations DOM. Ce dont le sujet a besoin, c'est d'un chargement JS asynchrone indépendant du chargement et du rendu de la page. Il existe de nombreux outils, voici un exemple de RequireJS :

    Page HTML :

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>Test Page</title>
    <script src="//cdn.staticfile.org/require.js/2.1.15/require.min.js" data-main="test1"></script>
    </head>
    <body></body>
    </html>
    

    Enregistrer sous test1.js :

    require.config({
        paths: {
            'jquery': '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery',
            'underscore': '//cdn.bootcss.com/underscore.js/1.7.0/underscore'
        },    
        waitSeconds: 20
    });
    require(['jquery'], function (module) {
        console.log("jQuery " + $.fn.jquery + " successfully loaded. ");
    }, function (err) {
        console.log("SHIT happened while loading jQuery! ");
    });
    require(['underscore'], function (module) {
        console.log(_.last([1, 2, 3, "Underscore.js successfully loaded. "]));
    }, function (err) {
        console.log("SHIT happened while loading Underscore.js! ");
    });

    répondre
    0
  • Annulerrépondre