2015-11-05 72 views
1

我正在查看restify的文檔。爲什麼這些restify函數以「return next()」結束?

http://restify.com/

我注意到,有幾個功能需要return next()結束。這裏有些例子;

function send(req, res, next) { 
    res.send('hello ' + req.params.name); 
    return next(); 
} 

server.post('/hello', function create(req, res, next) { 
    res.send(201, Math.random().toString(36).substr(3, 8)); 
    return next(); 
}); 
server.put('/hello', send); 
server.get('/hello/:name', send); 
server.head('/hello/:name', send); 
server.del('hello/:name', function rm(req, res, next) { 
    res.send(204); 
    return next(); 
}); 

return next();是什麼目的?爲什麼這些功能需要以它結束?

+2

打開您所引用的頁面,通過'next'打開'ctrl + f'。他們的主頁上有解釋權。 – zerkms

+1

這就是基本的回調鏈接的工作方式,一個一次性事件處理程序,用於「完成」作業。在這種情況下,它被傳入,這可能會填充響應,所以在放置時,它會將結果發送回我看到的其他「res」 – dandavis

回答

2

Restify's website

的使用注意事項中的()。您負責調用next()以運行鏈中的下一個處理程序。如下所示,您可以傳入一個Error對象來讓restify自動將響應返回給客戶端。

所以基本上,如果你的函數鏈中的最後一個處理你就不需要調用next()因爲沒有知道這一點,你加它,讓的RESTify處理它的方式。

+0

。所以,這就是爲什麼如此多的函數以next()結束,即使他們不需要它。如果程序員忘記在需要的時候忘記放在那裏,那麼以防萬一。我的理解是否正確? – user781486

相關問題