我具有以下功能:
function f (x : number): number {
return 1/x
}
function g (x : number): number {
return x*x
}
function h (x : number): number {
return f(g(x))
}
我正在尝试仅使用回调而不是使用promise 将h(如果需要,也可以将g和f)转换为异步函数,但是我坚持这样做。
我知道每个函数都应该有一个函数回调作为参数,但是我不确定该怎么做。
答案 0 :(得分:2)
我们可以从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)
})
}
感谢这一刻的怀旧。