Bất cứ khi nào có lỗi xuất hiện bên trong trình xử lý sự kiện, nó dừng hoàn toàn việc thực thi mã để gọi lại sự kiện thứ hai không được gọi.Lỗi Javascript dừng thực thi mã
Ví dụ:
$(function() {
window.thisDoesntExist();
}
$(function() {
//Do something unharmful and unrelated to the first event
}
Bạn có thể dễ dàng giải quyết vấn đề trong việc này (giản thể) ví dụ bằng cách thêm try/catch trong cả hai chức năng ẩn danh, nhưng trong thực tế các chức năng này thường thêm một số xử lý sự kiện khác mà lần lượt sẽ yêu cầu try/catch. Tôi kết thúc với mã rất lặp đi lặp lại nhồi với khối try/catch.
Dự án của tôi có thiết kế kiểu mô-đun trong đó mỗi đối tượng địa lý nằm trong một JS khác (và được ghép nối trong quá trình xây dựng). Tôi đang tìm một cách chung chung hơn để xử lý các lỗi bên trong mỗi tính năng để các lỗi không ngừng thực thi mã của các tính năng khác.
Tôi đã cố gắng giải pháp sau: - window.onerror (ngay cả khi bạn trở thành sự thật trong hàm này, mã thực thi được dừng) - $ (window) .error() => bị phản đối và thực thi mã dừng
Bạn đã đọc câu hỏi của tôi chưa? Bạn có thể dễ dàng giải quyết vấn đề trong ví dụ này (đơn giản) bằng cách thêm try/catch vào cả hai hàm ẩn danh, nhưng trong thực tế, các hàm này thường thêm một số trình xử lý sự kiện khác, do đó sẽ yêu cầu try/catch. Tôi kết thúc với mã rất lặp đi lặp lại nhồi với khối try/catch. – Webberig
Có lẽ đó là sự thỏa hiệp mà bạn phải thực hiện nếu bạn muốn mã của mình mạnh mẽ nhất có thể. – CBroe
@Webberig, tôi chắc chắn. Yêu cầu cơ bản bạn cần là tiếp tục chạy mã trên (bất kỳ) lỗi nào. Cách duy nhất là sử dụng try catch. Đây là bước đầu tiên. Sau đó, bạn có thể sử dụng một cuộc gọi lại lỗi hoặc phát ra một sự kiện lỗi hoặc bất cứ điều gì để làm cho lỗi của bạn xử lý vững chắc và linh hoạt. Bạn có thể tham khảo mã nguồn của Requirejs, nó cũng sử dụng try catch. https://github.com/jrburke/requirejs/blob/master/require.js –