Tôi có và ứng dụng expressjs và trên một tuyến đường cụ thể tôi gọi một chức năng đáp ứng với một người dùng từ cơ sở dữ liệu bằng cách gọi res.json
với tài liệu cơ sở dữ liệu làm tham số. Tôi sử dụng thư viện dựa trên lời hứa và tôi muốn nội tuyến cuộc gọi lại nơi tôi đang đặt tài liệu cơ sở dữ liệu trong phản hồi. Nhưng chương trình không thành công khi tôi làm như vậy. Ai đó có thể giải thích tại sao? Tôi cũng tự hỏi tại sao các cuộc gọi nội tuyến đến console.log
thực sự hoạt động. Có một số khác biệt cơ bản giữa hai phương thức res.json
và console.log
không?Tại sao tôi không thể gọi nội dòng đến res.json?
Dưới đây là ví dụ về những gì hiệu quả và những gì không hiệu quả. Giả sử getUserFromDatabase()
trả về lời hứa của tài liệu người dùng.
//This works
var getUser = function(req, res) {
getUserFromDatabase().then(function(doc) {
res.json(doc);
});
}
//This does not work (the server never responds to the request)
var getUserInline = function(req, res) {
getUserFromDatabase().then(res.json);
}
//This works (the object is printed to the console)
var printUser = function(req, res) {
getUserFromDatabase().then(console.log);
}
Nó trông giống như một ràng buộc vấn đề. http://alistapart.com/article/getoutbindingsituations – randunel