2011-07-13 33 views
7

Tôi đang thử nghiệm với Modernizer.load.Có thể modernizr tải tập lệnh không đồng bộ nhưng thực thi chúng theo thứ tự không?

Tôi có điều này:

Modernizr.load([ 
     { 
     load : ['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js'] 
     } 
     ]); 

Nếu tôi hiểu đúng, tôi có thể sử dụng mã như thế này để tải tập lệnh không đồng bộ. Tuy nhiên, sau đó tôi có thể thực hiện chúng theo thứ tự không? Điều gì sẽ xảy ra nếu myscript.js yêu cầu đối tượng jquery được tải trước?

Trong ví dụ trong tài liệu modernizr, tải ([]) có thể lấy thuộc tính 'hoàn chỉnh', tham số có thể là hàm có thể tải tập lệnh khác khi mọi thứ khác được thực hiện. Tuy nhiên, nếu tôi sử dụng một hàm ở đây để tải kịch bản sau phụ thuộc của tôi, sau đó nó tải theo thứ tự. Các tài liệu đặc biệt nói rằng điều này có thể gây hại cho sự hoàn hảo.

Tuy nhiên, nếu tôi tải mọi thứ không đồng bộ, tôi không có bất kỳ ý tưởng nào về thứ tự chúng chạy. Và tất nhiên, tôi cần sự phụ thuộc của tôi để chạy đầu tiên.

Trả lời

12

Nếu bạn sử dụng Modernizr.load, tất cả các tập tin bạn bao gồm thông qua danh sách nhúng/băm sẽ nạp không đồng bộ, nhưng mỗi chúng sẽ thực hiện theo thứ tự mà bạn đặt chúng trong.

Vì vậy, , ví dụ của bạn sẽ được tải các tập tin không đồng bộ nhưng thực hiện chúng theo thứ tự này:

1: /js/jquery-1.6.1.js 
2: /js/jquery.tools.min.js 
3: /js/myscript.js` 

bạn có thể đơn giản hóa ví dụ của bạn, bằng cách này:

Modernizr.load(['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js']); 

Để biết thêm chi tiết, hãy xem Modernizr.load() tutorial trong Tài liệu hoặc xem Yepnopejs.com (đó là những gì Modernizr.load() về cơ bản là, tại thời điểm này).

Các vấn đề liên quan