Hãy xem this JsFiddle:Làm thế nào để giảm tần suất của các lỗi như vậy trong mã của tôi?
var requests = [
$.ajax("http://search.twitter.com/search.json", { data: { q: 'ashishnjain' }, dataType: 'jsonp' })
.done(function() {console.log("request");}),
$.ajax("http://search.twitter.com/search.json", { data: { q: 'ashishnjain' }, dataType: 'jsonp' })
.done(function() {console.log("request");})
];
$.when(requests).done(console.log("alldone"));
Sản lượng dự kiến là: request request alldone
, nhưng trong thực tế này in alldone request request
. Có hai lỗi trong đoạn mã này (còn lại là một bài tập nếu bạn thích loại đó), nhưng cuối cùng tôi nghĩ điều này xảy ra vì JavaScript và jQuery đều rất khoan dung khi đưa ra các đối số không có ý nghĩa gì cả. Trong môi trường này, điều "đúng" có vẻ là "làm một cái gì đó hoặc không có gì, chỉ cần không ném một lỗi!".
Thấy mã này vượt qua JsLint và chỉ mất một vài giờ để gỡ lỗi (mã thực tế dĩ nhiên là một vài đơn đặt hàng phức tạp hơn), tôi tự hỏi tôi có thể làm gì khác giảm lãng phí thời gian vào sự khoan dung không được bảo đảm như vậy. Đây không phải là một ví dụ bị cô lập; nó dường như xảy ra hơn và hơn nữa. Bất kỳ đề xuất?
Các đối số không có ý nghĩa theo bạn. Theo động cơ, tôi chắc chắn họ làm. Lỗi nào bạn mong đợi từ "lỗi" của mình? Một cái gì đó như "đối số không hợp lệ"? – bzlm
@bzlm Tôi rất muốn thảo luận về điều đó, nhưng tôi lo sợ điều này sẽ làm giảm câu hỏi. Tôi không thể thay đổi JavaScript, và tôi không thể thay đổi jQuery (nhiều), vì vậy tôi tự hỏi làm thế nào để tránh những thứ như thế này. –
Tôi cảm thấy đau đớn của bạn. Nó là không thể tin được phổ biến như thế nào dễ bị lỗi kiểu lập trình này là. Một ngày trôi qua mà không cần phải rà soát thông qua mã JS của chính tôi và nhìn vào mọi chi tiết của các cú pháp nhỏ nhất, để tìm lỗi mà trình biên dịch thích hợp sẽ tìm thấy và gắn cờ trong một phần nhỏ của giây. Tôi không biết những người khác thích trải nghiệm bực bội này như thế nào, nhưng tuy nhiên họ làm điều đó, họ không thể làm việc hiệu quả theo cách đó. – Timwi