Кажется, у нас нет современного ответа:)
Теперь вы можете использовать Promise для него:
foo = function (bar) {
return new Promise(function (resolve, reject) {
...
if (error) {
reject('troz not found');
} else {
resolve(result);
}
});
}
или проще, если действие синхронно:
foo = function (bar) {
...
if (error) {
return Promise.reject('troz not found');
} else {
return Promise.resolve(result);
}
}
и затем для обработки результата:
foo.then(callback)
.catch(errorHandler);
, где
callback = function (result) {...}
errorHandler = function (errorMessage) {...}
, чтобы в случае ошибки не было выполнено обратный вызов (результат), в случае ошибкиerrorHandler ('troz not found') будет выполнен.
В качестве дополнительного преимущества - наличие обработчика результатов и обработчика ошибок отдельно.Хороший пример разделения интересов.