Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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 如何使用任务monad?(fp ts) import*as T from'fp ts/lib/Task' 从“fp ts/lib/function”导入{pipe,flow} const getHello:T.Task=()=>新承诺((解析)=>{ 解决('你好') })_Typescript_Functional Programming_Fp Ts - Fatal编程技术网

Typescript 如何使用任务monad?(fp ts) import*as T from'fp ts/lib/Task' 从“fp ts/lib/function”导入{pipe,flow} const getHello:T.Task=()=>新承诺((解析)=>{ 解决('你好') })

Typescript 如何使用任务monad?(fp ts) import*as T from'fp ts/lib/Task' 从“fp ts/lib/function”导入{pipe,flow} const getHello:T.Task=()=>新承诺((解析)=>{ 解决('你好') }),typescript,functional-programming,fp-ts,Typescript,Functional Programming,Fp Ts,我理解任务的目的以及它的重要性。问题是,我真的不知道如何正确地使用它或用它作曲 如果我只是打电话给getHello(),它会给我承诺: console.log(getHello())//返回承诺 但是,如果我这样做: const run=async()=>{ const hello=wait getHello() console.log(hello)//打印“hello” } 它起作用了 但这是: const waitAndGet = async () => { return aw

我理解
任务的目的以及它的重要性。问题是,我真的不知道如何正确地使用它或用它作曲

如果我只是打电话给
getHello()
,它会给我
承诺

console.log(getHello())//返回承诺
但是,如果我这样做:

const run=async()=>{
const hello=wait getHello()
console.log(hello)//打印“hello”
}
它起作用了

但这是:

const waitAndGet = async () => {
  return await getHello()
}

console.log(waitAndGet()) // prints Promise<pending>

首先,让我们了解什么是真正的

export interface Task<A> {
  (): Promise<A>
}

// note that this could also be written as
export type Task<A> = () => Promise<A>

async
函数总是返回承诺,这与fp-ts无关。它似乎是可调用的返回承诺的东西的别名,而
async
函数也是。非常感谢您花时间向我解释这一点,它意义重大!我现在好多了
Task
map
采用纯程序并应用于
Task
,甚至在使用
然后
解决它之前。我知道这是另一个问题,我很抱歉,但我试着像你在上面做的一样,这给了我一个错误。除此之外,你知道有没有办法从任务中提取价值?如果你能仔细研究一下:或者,用更好的话来说,在编写它之后,我如何执行它?@padowbr对不起,我忘了添加这么简单的东西!要执行
任务
,只需调用它:
logHelloAndWorld()
。这同样适用于
IO
s。对于错误,我很抱歉,我的错。我在回答中确定了这一点;它应该是
getHello
,而不是
getHello()
。没关系!非常感谢你。但是,如果我不想将解析的值记录到控制台,而是想返回值本身呢?