2012-01-15 29 views
5

Có cách nào tốt hơn cách này để tạo chức năng gọi lại cho một số chức năng ngẫu nhiên không?Cách tốt nhất để tạo chức năng gọi lại

var showObj = function(obj,callback) { 
    return setTimeout(function() { 
     if(opts.centerObj == true) { 
      var cssProps = getProps(obj); 
      obj.css(cssProps).fadeIn('slow'); 
     } 
      else { 
       obj.fadeIn('slow'); 
      } 
     if(typeof callback == 'function') { 
      callback.call(this); 
     } 
    }, 1500); 
} 

Chức năng gọi lại không có bất kỳ tham số khi tôi sử dụng nó, tôi chỉ làm như thế này:

showObj(obj,function(){ 

/* Some Callback Function */ 

}); 
+0

Vì vậy, câu hỏi của bạn là liệu có cách nào tốt hơn là chuyển một hàm ẩn danh sang 'showObj' hoặc cái gì? –

+0

Điều gì sai với việc triển khai hiện tại của bạn? – TJHeuvel

+0

@Felix Kling, Không, nếu cú ​​pháp của tôi đúng, hàm hoạt động tốt (hàm gọi lại) nếu tôi gọi nó, và cũng có cách khác để thêm/xác định hàm gọi lại vào một số chức năng ngẫu nhiên. – Roland

Trả lời

3

Tôi đoán không có cách nào 'xấu' hay 'sai' đặc biệt để gọi bất kỳ phương thức (gọi lại) nào. Bạn đang làm tốt ở đó, cũng kiểm tra cho một chức năng.

Đề xuất duy nhất của tôi sẽ ở đó, không gọi hàm bằng .call(). Trừ khi bạn cần phải vượt qua ngữ cảnh hiện tại, chỉ cần gọi callback();. Đó là do các cuộc gọi .call().apply() chậm hơn tới 30%.

2

Đây là một trong những chức năng gọi lại đầy đủ nhất mà tôi đã thấy. Vì vậy, câu trả lời là không, đây là một trong những điều tốt nhất.

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