NodeJS: the beautiful callback err machine

One of the best things about NodeJS callbacks is their consistency. As in, most API calls require one and their method signature always follows the same pattern, and this is the most beautiful bit.

The first parameter of a callback is always an error object (which is null if no error occurred). This seems a little counterintuative at first. When you stop and think about it though, it really isn’t at all. My initial though was that most of the time, it isn’t going to be used, so why isn’t the result of the computation the first parameter? Well, that might be nice, but chances are you’re actually going to have to check to see if an error occurred first, before you start using your results, since if a error did occur, you probably don’t have any results anyway! Secondly, Node is cleverly reminding you that you should check for and deal with errors as they happen by ensuring you define a first parameter in order to define a second parameter to get at the stuff you want.

If the error was the second (or last) parameter the chances are you’d forget to define it, or the lazy would simply neglect to define it. This could happen because in JavaScript all parameters to functions are optional. Just because you do or don’t define parameters to a function, doesn’t mean you can’t call it with or without parameters. The function might not work in either of these cases, but nevertheless it is still possible to call it. It seems that by not coercing the programmer into defining an error parameter and dealing with it their code could become less robust.

The error parameter in the callback function is a necessity of asynchronous programming because errors cannot usually caught with a try/catch block as the execution of the callback function usually doesn’t happen in the block of code surrounded by the try/catch but instead in a later run of the event loop. I much prefer this way of dealing with errors as opposed to searching through my library code to find out if I even need to surround a function call in a try/catch by figuring out if it even does an operation that could possibly throw an error…and you know what, it’s future proof, because even if a function does no operations that could cause an error, it doesn’t mean that in a future version it won’t. By defining an error parameter from the start you can deal with a future mishap, now that is awesome.

11,504 thoughts on “NodeJS: the beautiful callback err machine

  1. ГонконгМеккаМосква КунцевоРукаБалтийскКаронБедокКимберлиКолаЛакинск https://glavniyguru.ru КурловоКочкор-АтаОханскЯкутияКаунасАмед БалиКанберраОстров ГамильтонХельсингерБразилиа

  2. НовоульяновскМечиЧэндуТаорминаСосновецОльбия СардинияХусавикПавловский ПосадГожув-ВелькопольскийАхмедабад https://lucky-business.ru Шарм Эль ШейхЦаухензееСкуденесаванМарфиноКентауСингапурШицзячжуанАнтибРежМинеральные Воды

  3. molpit.ru/ – гармония эстетики и функциональности в каждой детали.

  4. We focus on features that provide the best gaming experience while ensuring anonymity and privacy.

  5. БрестМанаусЛидаМариямполеНесауалькойотльИль-Сент-МариСаратовУлькентауКитоДаалу Мальдивы https://gazrp.ru Ча-АмКольчугиноБелогорскнеАэропорт ВнуковоУстюжнаБретаньТунис ТунисЭредиаСиаргаоМосква Перово

  6. кстати забыл еще… Фриспины кэшбэк бонусы за добавление денег на счета безвзносовые бонусы https://most63betruss.xyz/ поощрения в партнерской в непосредственной близости дона интересная это имеют постоянные клиенты.

  7. Hey there! This is kind of off topic but I need some advice from an established blog.
    Is it tough to set up your own blog? I’m not very
    techincal but I can figure things out pretty fast. I’m thinking about setting up my own but I’m not sure where to start.
    Do you have any tips or suggestions? Many thanks

  8. Санкт ПельтенМосква ВойковскийПыхаИвантеевкаТринидадТанзания ЗанзибарСидеКерманшахЛундКиренск https://istorus.ru ВлоцлавекМосква ЗябликовоСанто-ДомингоХуджандМосква ЛюблиноЧернушкаГонконг ГонконгЛос-КабосЛес КаррозНовохопёрск

  9. ЧерногорияВерещагиноКстовоГубкинскийУгличСпасскСием Реап КамбоджаЛивныБугульмаВаль дИзер https://krunch.ru о. Фрегат СейшелыЛивиньоДуховщинаСодвана БейВараждинАмедРечицаКо Пхи ПхиЛа ПланьНизва

  10. [url=https://molpit.ru/]https://molpit.ru[/url] – уникальный дизайн и надежные материалы.

  11. Диплом вуза купить официально с упрощенным обучением в Москве

  12. ВытеграГданьскСаирмеМеленкиСадоводство КирпичноеИстраФельдбергКопалБелинскийОстровной https://oc-solnechnyi.ru БайконырЛа-РоманаБилибиноОлимпийское побережьеКвитфьельСнежноеПак КретСтолинЭрзурумЭль Нидо

  13. You actually make it seem so easy with your presentation but I
    find this topic to be really something which I think
    I would never understand. It seems too complicated and very broad for me.
    I’m looking forward for your next post, I’ll try to get the hang of it!

  14. ТаррагонаСен-Жерве-ле-БенБелогорскнеШуменПаттайя-ЧонбуриМонтеррейГдовПарижРоглаМосква Строгино https://erpies.ru НовинкаУсинскДальянМуромГомельТаласВерхняя ПышмаМэтьюринАрамбольАксай

  15. nemakrame.ru – кухни созданные для вашего удобства и вдохновения.

  16. ГавайиБрестЖодиноНижняя СалдаПаралимниСаншайн-КостТропеяМосква ЗелАОСуратСерноводское https://intellog.ru ТорезЛобняМосква РаменкиКашинАль ХорОстров МафияОстров МадейраМосква СавеловскийИланскийКасансай

  17. кухни под заказ екатеринбург – надежное качество и современный дизайн.

  18. Остров Ко РонгВеронаКурессаареСан – МариноПлайя-дель-КарменСохарКондровоСиная РумынияСанта-Крус-де-ТенерифеАрсеньев https://dvtgk.ru БайришцелльМангеймВриджхейдГибралтар ГибралтарСан-СебастьянМуравленкоКлермон-ФерранЧангТимишоараСевастопольне

  19. Москва ХорошевскийРабатКарелиВеронаОстров ПалаванОстерхаутБугурусланЦимлянскПернераМосква ЮАО https://galaxycrypto.ru НальчикИргизМорондаваГент БельгияГуайнабоНевельЕльняКампителло-ди-ФассаСьенфуэгосЛефортово

  20. АлбанияРославльМиорыПущиноВахдатЖдановкаБанска-БистрицаМолоковоАнкараЛесной https://grand-laser.ru БланесСерр ШевальеХорошёво-МнёвникиЛадваБашка ВодаСаранУтрехтОАЕ Абу-ДабиПикалёвоМценск

  21. МонсПавлодарАгадирСейшелыАлбуфейраПроспект ВернадскогоСаннесНовомосковскБирючДжимбаран Бали https://bikecamp.ru МунтинлупаАлкмаарПонте-ди-ЛеньоКаражалМисратаГаммартХаммамет ТунисВанкуверВиченцаМосква Московский

  22. СемейГалляаралОтправка поуМогилёвГили ТраванганЗамбоангаСевастопольнеНейпьидо МьянмаОханскГрандвалира https://dendy2.ru Ла-ДигХаапсалуНорильскИзола 2000КингисеппОруроРогашка СлатинаСибиуЗейтунХуалянь

  23. Filitra vardenafil tablets Canada Pharmacy 24 Hour Drug Store canadian online pharmacy Cialis online no prescription

  24. УрюпинскОчо-РиосКанкунСтолинАлмадаМухарракМосква Северо-ЗападныйБарранкильяЧернушкаБирюлёво https://dvtgk.ru ДюртюлиТраморСтокгольмМосква Теплый СтанМултанКигомаСофияДолгопрудныйКиришиКрасноуфимск

  25. кухни на заказ – воплощение ваших идей с учетом всех предпочтений.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>