搜尋

首頁  >  問答  >  主體

node.js - router.get("conten1")兩次時,報錯。求幫助

圖片描述

#result1的時候直接報錯,求幫忙

给我你的怀抱给我你的怀抱2744 天前704

全部回覆(1)我來回復

  • 我想大声告诉你

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

    為什麼

    1.當在第一個get路由解析成功後,服務端會直接render content1渲染出去,不會等到第二個的到來,這也就是為什麼參數當中有一個next的原因。

    2.express中,路由的順序是挨著挨著走的,如果你不使用next,那麼預設只會觸發第一個get()中的回呼方法。

    解決辦法

    同步查詢,最後一起render

    我也是新手,給你寫了一些程式碼,能說明邏輯問題

    
    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);
    
    });
    

    回覆
    0
  • 取消回覆