Мы можем начать с f
, который предоставляет пример управления ошибками:
function f(x: number, cb: (err: any, result?: number) => void): void {
if (x === 0)
cb(new Error("Cannot call 'f' with zero"))
else
cb(null, 1/x)
}
Вот как это использовать:
f(5, (err, result) => {
if (!err)
console.log("… do something with:", result)
})
Функция g
проста:
function g(x: number, cb: (err: any, result?: number) => void): void {
cb(null, x * x)
}
И h
становится похожим на доброго старомодного ада обратного вызова:
function h(x: number, cb: (err: any, result?: number) => void): void {
g(x, (err, gResult) => {
if (err)
cb(err)
else
f(gResult, cb)
})
}
Спасибо за этот момент ностальгии.