Tôi đã thử tìm kiếm nó ở khắp mọi nơi ngay cả trên tài liệu Angular.org nhưng không thể tìm thấy bất kỳ giải thích chi tiết nào về cách triển khai. Nó sẽ rất hữu ích nếu bất kỳ ai có thể giải thích nó.
Tôi đã thử tìm kiếm nó ở khắp mọi nơi ngay cả trên tài liệu Angular.org nhưng không thể tìm thấy bất kỳ giải thích chi tiết nào về cách triển khai. Nó sẽ rất hữu ích nếu bất kỳ ai có thể giải thích nó.
Câu trả lời:
angle.noop là một hàm trống có thể được sử dụng làm trình giữ chỗ khi bạn cần chuyển một số hàm dưới dạng tham số.
function foo (callback) {
// Do a lot of complex things
callback();
}
// Those two have the same effect, but the later is more elegant
foo(function() {});
foo(angular.noop);
noop
thay vì chỉ để trống hàm là gì? Tính thẩm mỹ, hiệu suất hay thứ gì khác?
angular.noop
là bạn luôn sử dụng lại cùng một hàm trống (thay vì khai báo một hàm ẩn danh mới). Về mặt hiệu suất, nó không có gì khác biệt vì mã của angular.noop
chỉ là một hàm trống có tên noop
.
Tôi thấy nó cực kỳ hữu ích khi viết một hàm mong đợi một cuộc gọi lại.
Thí dụ:
function myFunction(id, value, callback) {
// some logic
return callback(someData);
}
Hàm trên sẽ trả về một lỗi, khi nó được gọi mà không chỉ định đối số thứ ba. myFunction(1, 'a');
Ví dụ (sử dụng angular.noop
):
function myFunction(id, value, callback) {
var cb = callback || angular.noop; // if no `callback` provided, don't break :)
// some logic
return cb(someData);
}
typeof callback === 'function' && callback();
. Cách đẳng cấp hơn ^^. Không sử dụng angular.noop
mặc dù.
Nó là một chức năng không thực hiện hoạt động nào. Điều này rất hữu ích trong tình huống như thế này:
function foo(y) {
var x= fn();
(y|| angular.noop)(x);
}
Nó rất hữu ích khi viết mã theo kiểu hàm
//do nothing on the success callback, hence replacing the success callbck function with angular.noop()
$ scope.contacts = Contacts.query (angle.noop, function (response) {Window.myresp = response; $ scope.displayError (response); console.log ("bad boy, listContacts fail ");});
* câu trả lời này giả định rằng bạn không phải là người mới bắt đầu về góc cạnh
Angular.noop là một hàm trống có thể được sử dụng làm trình giữ chỗ trong một số trường hợp
ví dụ:
Hãy tưởng tượng bạn đang sử dụng q.all thực hiện nhiều cuộc gọi đến api và trả về một lời hứa. Nếu một số cuộc gọi này không thành công nhưng bạn vẫn cần xử lý những cuộc gọi không thành công, hãy sử dụng angle noop làm lệnh gọi lại api khi bạn bắt được cuộc gọi. Nếu bạn không sử dụng angle noop, q.all sẽ từ chối mọi thứ nếu một cuộc gọi không thành công.
Q.all (somecall.catch (angle.noop), anothercall) .then (giải quyết kết quả [0] và kết quả [1])
Nếu một cuộc gọi không thành công, Angular sẽ bỏ qua điều đó và thực hiện một cuộc gọi khác (nhưng u vẫn sẽ không được xác định cho kết quả được giải quyết đầu tiên)
Tôi hy vọng rằng tôi đã giúp
var result = (callback || angular.noop)(params)
Đó là cách ngắn nhất để làm
var result = typeof callback === 'function' && callback(params);
Có tính đến rằng callback var sẽ là một hàm
Nếu bạn muốn tài liệu chính thức ở đây là liên kết . Nó khá đơn giản. Tôi cũng đã dán tài liệu hiện tại từ liên kết.
Một chức năng không thực hiện hoạt động nào. Hàm này có thể hữu ích khi viết mã theo kiểu hàm.
function foo(callback) {
var result = calculateResult();
(callback || angular.noop)(result);
}
Thủ thuật: Bạn cũng có thể sử dụng nó để thêm một con ba ba vào một ng-click
thuộc tính:
ng-click="(variable) ? doSomething() : angular.noop()"
Cho đến khi tôi phát hiện ra bạn có thể sử dụng ng-click = "variable && doSomething ()" `
ng-click="(variable) ? doSomething() : true"
cũng sẽ hoạt động