2016-04-02 281 views
0

設置響應,當我使用的承諾不確定的。我的代碼看起來是這樣的:快速響應的承諾

app.get("/api/assignment/user", getUserByUsername); 

function getUserByUsername (req, res) { 
    var username = req.query.username; 
    model.findUserByUsername(username) 
     .then(defaultJsonResponse(res), notFound(res)); 
} 

function defaultJsonResponse(res) { 
    return function(nObj) { defaultJsonResponse(nObj, res)}; 
} 

function defaultJsonResponse(njson, res) { 
    if(njson) res.json(njson); 
    else notFound(res, "error"); 
} 

當我運行getUserByUsername方法,我得到TypeError: Cannot read property 'json' of undefined。 我無法理解爲什麼響應是undefineddefaultJsonResponse(njson, res)

+0

你必須通過一個回調'then',你的函數調用的不是結果。用函數表達式來包裝它們。 – Bergi

+0

爲什麼你有函數defaultJsonResponse定義兩次?在if/else語句之後,您還缺少括號。 – user2263572

+0

@ user2263572,那裏不需要括號。你確定你收到迴應嗎?如果是的話,你能提供JSON嗎? – Filipe

回答

0

答案是@Bergi在上面的評論中說的,這是我對JavaScript函數重載的理解不夠。通過給方法2個不同的名字解決了問題。