打字稿转换为异步

时间:2019-05-30 15:46:21

标签: typescript asynchronous callback

我具有以下功能:

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)转换为异步函数,但是我坚持这样做。

我知道每个函数都应该有一个函数回调作为参数,但是我不确定该怎么做。

1 个答案:

答案 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)
    })
}

感谢这一刻的怀旧。