Các lập trình viên dường như bị phân chia về cách nhận thông báo không đồng bộ về lỗi.Ưu điểm của việc sử dụng sai sót là gì?
Một số lập trình viên muốn sử dụng gọi lại với hai đối số: giá trị và boolean cho biết giá trị có sai không. Điều này có lợi ở chỗ nó trông giống như một tuyên bố try catch
:
asyncFunct(function (value, noError) {
if (noError) {
// success, do something with value
} else {
// value is the error which is thrown
}
});
số khác lại thích sự tiêu cực (ví dụ: boolean nên nói cho dù giá trị là sai lầm). lập luận của họ là nếu bạn biết rằng chức năng không đồng bộ sẽ không bao giờ ném ra một lỗi sau đó bạn có thể yên tâm bỏ qua tham số thứ hai như sau:
asyncFunction(function (value, isErroneous) {
if (!isErrorneous) {
// success, do something with value
} else {
// value is the error which is thrown
}
});
asyncFunction(function (value) {
// success, do something with value
});
Sau đó, có những người đề xuất callbacks riêng biệt để thực hiện thành công các chức năng đồng bộ và errbacks để thực hiện sai các chức năng không đồng bộ. Điều này cho phép các lập trình viên để chọn nếu anh muốn xử lý callbacks, errbacks, cả hoặc không có gì:
asyncFunction(function (value) {
// success, do something with value
}, function (error) {
// handle the error
});
asyncFunction(function (value) {
// success, do something with value
});
asyncFunction(null, function (error) {
// handle the error
});
Tôi không yêu cầu cho phương pháp nào bạn thích. Tôi chỉ đơn giản là yêu cầu những lợi thế và bất lợi của mỗi phương pháp để tôi biết cái nào để sử dụng khi nào.
Không có ưu điểm/nhược điểm thực sự nào. Nó chỉ là vấn đề về phong cách, imho. – freakish
Có một cách khác, IMO mạnh hơn nhiều: [đối tượng trì hoãn] (http://blogs.msdn.com/b/ie/archive/2011/09/11/asynchronous-programming-in-javascript-with- promise.aspx). –
Tôi thích các đối tượng trì hoãn quá. Nhưng bất kỳ phương pháp nào bạn chọn đều sử dụng nó một cách nhất quán trong suốt ứng dụng của bạn, tính nhất quán thường quan trọng hơn việc chọn phương pháp _best_. – msanders