2015-01-17 7 views
0

Chrome Extension Notification API имеет create метод со следующей подписью:Правильный способ использования уведомлений API без необходимости обратного вызова

notifications.create(string notificationId, object options, function callback) 

Я на самом деле не имеют обратного вызова, что мне нужно работать, когда уведомление заканчивается, но если я опускаю обратный вызов, он выдает ошибку:

Error in response to storage.get: Error: Invocation of form notifications.create(string, object, null) doesn't match definition

Справедливо. Я не пишу много JavaScript. Каков наилучший способ использования этого API, когда мне нужен обратный вызов noop?

+2

Передача пустой функции? 'notifications.create (" idHere ", {options: here}, function() {});' – nnnnnn

+1

Отлично. Это то, о чем я думал, но подумал, что лучше убедиться, что это не более идиоматический подход. – mlissner

+0

Я копаю. Благодарю. – mlissner

ответ

2

Если API заставляет вас пройти некоторую функцию, то вы можете просто передать пустую анонимную функцию:

notifications.create("idHere", {options:"something"}, function() {}); 

Или (особенно, если вам нужно сделать, это в нескольких местах) можно явно определить ваш собственная функция no-op:

function noop() {} 

notifications.create("idHere", {options:"something"}, noop); 
someOtherAPI.someMethod(noop); 
+0

Мне это нравится, за исключением вызова функции ' Noop() '. Если он делает это в нескольких местах, преимущество наличия явно определенной функции заключается в том, что, когда обнаруживается, что что-то действительно нужно делать при обратном вызове, вам нужно только поставить код в одном месте. Однако, как только вы это сделаете, имя 'noop()' становится ложью. 'notificationCallback()' не совершенен, но лучше, чем 'noop()'. – CandiedOrange

+1

@CandiedOrange - Я бы порекомендовал 'noop()', где OP фактически хочет * no-op. Если 'noop()' используется в нескольких местах, а затем изменяется требование, каковы шансы, что * все * этих мест будут иметь одно и то же новое общее требование? (И если они буквально * все * меняются на одно и то же новое требование, ну, вот почему моя IDE находит/заменяет.) – nnnnnn

+0

Вы даете им то же имя, когда у них будет одно и то же новое требование. Это старая идея, появившаяся в новом свете. «Noop()» вы рекомендуете здесь функциональную версию магического номера. Название подразумевает, что его следует использовать в любое время, когда вы ничего не хотите делать. Распространяйте это широко в большом проекте, и вы вызываете головную боль обслуживания. Я смиренно призываю вас достичь лучшего имени, которое отражает контекст. – CandiedOrange