Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 类型脚本转换为异步_Typescript_Asynchronous_Callback - Fatal编程技术网

Typescript 类型脚本转换为异步

Typescript 类型脚本转换为异步,typescript,asynchronous,callback,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)) } 我正试图通过回调将h(如果需要的话,也可以使用g和f)转换为异步函数,而不是通过promises转换,但我坚持这样做 我知道每个函数都应该有一个函数回调作为参数,但我不知道如何做。我

我有以下职能:

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))
}
我正试图通过回调将h(如果需要的话,也可以使用g和f)转换为异步函数,而不是通过promises转换,但我坚持这样做


我知道每个函数都应该有一个函数回调作为参数,但我不知道如何做。

我们可以从提供错误管理示例的
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)
    })
}

感谢您的怀旧之情。

不过,这并没有什么不同步的。这是一个非常笨拙的同步代码:)@johnyhk我假设问题中描述的操作代表异步的东西。我们可以编写
setTimeout
,但这可能不是作者想要的;将它们转换为异步是什么意思?