На прошлой неделе я в одиночку пробежал спринт по прозвищу Callback Hell. Это был самый запоминающийся спринт для меня. В этом спринте было сделано несколько важных выводов. Лично самой большой была идея обернуть обратные вызовы внутри обратных вызовов. Во время спринта упаковка обратных вызовов стала немного чрезмерной, отсюда и название «ад обратных вызовов».
Еще один вывод из ада обратных вызовов — это изучение того, как асинхронные вызовы взаимодействуют с синхронными вызовами. Если вы забудете обернуть синхронные вызовы в асинхронные вызовы, из которых вам нужны данные, это доставит вам очень много неприятностей.
Ниже приведен небольшой пример переноса обратного вызова, представьте, что последний обратный вызов является синхронным вызовом, а другие функции — асинхронными вызовами. Наслаждаться!
var getTotal = function(thingOne, thingTwo, callback { let thingCou1 = getCount(filePathOne, (err, result1) => { if (err) { callback(err, null); return; } let thingCou2 = getCount(anotherThingOne, (err, result2) => { if (err) { callback(err, null); return; } callback(null, thingCou1 + thingCou2); }); }); };