2012-01-17 39 views
5

Tôi cần có một giá trị được trả về và trình xử lý sự kiện vào hàm khởi tạo sự kiện ngay từ đầu, chỉ trả về giá trị sẽ chỉ nhận được trong trình xử lý sự kiện . Tôi tin rằng cần có một cách dễ dàng để thực hiện điều này hoặc để tấn công vấn đề từ một góc độ khác.Giá trị trả về từ trình xử lý sự kiện thành hàm cha từ javascript

Những gì tôi thực sự cần phải làm là:

  1. Tạo một đối tượng img DOM mới để nuôi dataURL vào (các dataURL đến từ canvas.toDataURL())
  2. img.onload sẽ cho phép tôi trả lại dữ liệuURL

Tôi đang sử dụng jQuery nếu điều đó giúp bằng cách nào đó nhưng không phải tất nhiên. Theo hiểu biết của tôi, tôi không thể dựa vào img để có dữ liệu ngay lập tức và cảm thấy ngu ngốc khi sử dụng timeout để chờ sự kiện kích hoạt và sử dụng biến toàn cục, đặc biệt vì một số có thể được xử lý song song. .

Để có nhiều nền hơn, điều này là tất cả để thay đổi kích thước hình ảnh trước khi (đa) tải chúng lên bằng công cụ HTML5.

Cảm ơn thậm chí để đọc, và cho bất cứ lời khuyên tất nhiên :)

Cảm ơn, Igor

+0

Không có gì, chỉ cần viết trình xử lý sự kiện và sau đó nhận ra rằng tôi cần giá trị trong hàm "cha mẹ". Tôi nhận ra tôi có thể lặp lại với thời gian chờ, nhưng trực giác cho tôi biết nên có một cái gì đó thông minh hơn :) –

+1

Một thư viện hứa hẹn có thể đáng xem xét: https://github.com/kriskowal/q – thetallweeks

+1

đó là một cái rất cũ, nhưng có thể một bình luận hữu ích cho một người tình cờ gặp câu hỏi này. Tôi sử dụng Bluebird những ngày này cho các lời hứa. Xem lại câu hỏi khiến tôi nhận ra nhiều tiến bộ đã được thực hiện, nhờ @thetallweeks cho người bồi dưỡng thứ Sáu) –

Trả lời

3

Nó không có ý nghĩa để trở giá trị từ một event handler. Sự kiện xảy ra khi chúng xảy ra và trình xử lý được gọi bởi trình duyệt tại thời điểm đó. Do đó, không có mã nào mong đợi bất kỳ giá trị trả về nào; không có nơi nào để nó đi.

Thay vào đó, chỉ cần thực hiện bất cứ điều gì bạn cần làm bên trong trình xử lý sự kiện.

+0

Tôi cần trả về giá trị từ hàm (F) đã xây dựng đối tượng mà sự kiện đó kích hoạt một biến được gọi là F ở vị trí đầu tiên. Xin lỗi nếu nó gây nhầm lẫn :) –

+0

Tôi biết những gì bạn đang nói, nhưng nó chỉ đơn giản là không thể làm điều đó. JavaScript trong trình duyệt web là môi trường không đồng bộ; bạn không thể làm cho một chức năng "chờ đợi" cho một cái gì đó xảy ra. Cách cấu trúc mã của bạn, do đó, là nắm lấy bản chất không đồng bộ, và thay vì viết một hàm mong đợi một giá trị trả về, có nó * truyền vào * một hàm xử lý của chính nó sẽ được trình xử lý "onload" gọi của hình ảnh. – Pointy

+1

Tôi nghĩ rằng tôi đang nhận được ở đó ... Tôi cần phải vượt qua một xử lý khác vào xử lý ban đầu để thực hiện nó khi img được nạp ... –

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