function indexArticles(callback) {
fs.readdir("posts/", function(err, files) {
async.map(files, readPost, function(err, markdown) {
async.map(markdown, parse, function(err, results) {
async.sortBy(results, function(obj, callback) {
callback(err, obj.date);
}, function(err, sorted) {
callback({"articles": sorted.reverse()});
});
});
});
});
}
Tôi đang cố gắng tìm ra cách làm đẹp hơn - như bạn có thể nói tôi đang sử dụng thư viện không đồng bộ của caolan, nhưng tôi không chắc kiểm soát cấu trúc dòng chảy để sử dụng. Nó có vẻ như nếu tôi sử dụng async.waterfall, ví dụ, kết quả trong mã khá nhiều hơn một chút, với mỗi bước phải được bao bọc trong một hàm ẩn danh. Ví dụ: đây chỉ là hai dòng đầu tiên của phiên bản lồng nhau có thác nước:Tái cấu trúc các cuộc gọi lại lồng nhau, node.js, async
function indexArticles(callback) {
async.waterfall([
function(callback) {
fs.readdir("posts/", function(err, files) {
callback(err, files)
})
},
function(files, callback) {
async.map(files, readPost, function(err, markdown) {
callback(err, markdown)
})
}])
}
Bạn sẽ cải thiện điều này như thế nào?
Nếu có một cách để áp dụng một phần tranh luận không chỉ từ bên trái, sau đó tôi có thể thấy làm, ví dụ,
function indexArticles(callback) {
async.waterfall([
async.apply(fs.readdir, "posts/"),
async.apply(async.map, __, readPost),
async.apply(async.map, __, parse),
// etc...
])
}
Trong khi 'thác nước 'có thể kết thúc với nhiều ký tự hơn, tôi nghĩ nó sẽ kết thúc dễ đọc hơn. Ngoài ra, hãy kiểm tra 'apply' để trợ giúp tất cả các hàm anon đó. –
Bạn có thể xem ví dụ về thác nước mà tôi vừa mới đăng và cho tôi biết liệu tôi có đang làm đúng không? –