2013-08-05 3 views
0

Mon application juste prend simplement en entrée et les stocke dans un tableau et supprime alors, mais voici ce que je reçois quand je tape 1234567890 dans un ordre séquentielcomportement étrange express pour écouter sur demande

Express server listening on port 3000 
1 1 
0 
12 1 
0 
123 1 
0 
1234 1 
0 
12345 1 
0 
123456 1 
0 

il s'arrête pendant environ 3 minutes avant d'afficher ceci

1234567 1 
0 
12345678 1 
0 
123456789 1 
0 
1234567890 1 
0 

pourquoi s'arrête-t-il? semble qu'il y ait une sorte de délai d'attente passe ou il y a une sorte d'écoute, je me occupe pas correctement

var express  = require('express') 
, http   = require('http') 
, path   = require('path') 
, fs   = require('fs'); 

var app = express(); 

app.configure(function(){ 
     app.set('port', process.env.PORT || 3000); 
     app.set('views', __dirname + '/views'); 
     app.set('view engine', 'jade'); 
     app.use(express.favicon()); 
     app.use(express.logger('dev')); 
     app.use(express.bodyParser()); 
     app.use(express.methodOverride()); 
     app.use(app.router); 
     app.use(express.static(path.join(__dirname, 'public'))); 
}); 

var queries = new Array(); 

function printAndShiftArray() { 
     console.log(queries + " " + queries.length); 
    if (queries.length == 0) { 
     console.log("array is empty"); 
    } else { 
     queries.shift(); 
    } 
     console.log(queries + " " + queries.length); 
} 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

app.post('/search', function(req, res) { 
input = req.param('letter'); 
queries.push(input); 
printAndShiftArray(); 
}); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

appeler la/recherche api avec ce

 $(document).ready(function() { 
      $('#letter').on("keyup", function() { 
       letter = $('#letter').val(); 
       $.post("/search", { letter: letter}, function(data) { 
        $('#status').html(data); 
       }); 
      }); 
     }); 
+0

Comment avez-vous appelé l'API? – zsong

+0

Désolé, j'ai oublié de poster cela. vient d'ajouter le code jQuery – archytect

Répondre

2

Vous devez res.end('') dans votre /search gestionnaire .

Vous ne terminez pas la réponse lors de la gestion /search. Il y a donc 6 demandes simultanées ouvertes depuis votre navigateur au point où vous avez tapé '6', et jQuery n'en enverra plus. Il attend ensuite 3 minutes, jusqu'à ce que ces demandes expirent (avec une erreur, que vous ne voyez pas), puis il envoie les 4 restantes.

+0

quelque chose de si simple. Merci beaucoup. – archytect