recherche

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

node.js - Lorsque router.get("conten1") est utilisé deux fois, une erreur est signalée. s'il vous plaît, aidez

Description de l'image

Result1 signale directement une erreur, aidez-nous s'il vous plaît

给我你的怀抱给我你的怀抱2821 Il y a quelques jours722

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

  • 我想大声告诉你

    我想大声告诉你2017-05-24 11:40:38

    Pourquoi

    1. Lorsque la première route get est analysée avec succès, le serveur restituera directement content1 sans attendre la seconde. C'est pourquoi il y a un next dans le paramètre.

    2. En express, l'ordre des routes est côte à côte. Si vous n'utilisez pas next, alors seule la méthode de rappel du premier get() sera déclenchée par défaut.

    Solution

    Synchronisez la requête et enfin effectuez le rendu ensemble

    Je suis aussi novice, j'ai écrit du code pour vous expliquer le problème de logique

    
    let data = {};
    router.get('/', function (req, res, next) {
        data = {};
        //模拟DB查询回调
        setTimeout(function () {
            data.user = {id: 1, username: 'zhaojunlike'};
            //传递到下面
            next();
        }, 1000);
    
    });
    router.get('/', function (req, res, next) {
        console.log(data);
        //模拟第二次查询并且输出Render
        setTimeout(function () {
            data.content = {email: 'zhaojunlike@gmail.com'};
            res.render('index', {title: 'Express', data: data});
        }, 1000);
    
    });
    

    répondre
    0
  • Annulerrépondre