gpt4 book ai didi

javascript - 函数组合提前返回

转载 作者:行者123 更新时间:2023-12-03 02:20:33 25 4
gpt4 key购买 nike

我正在编写一系列函数,但我想知道首先实现我想要的功能的最佳方法是什么,这就是我的编写方式:

const composeP = (...fns) => fns.reduce((f, g) => async (...args) => f(await g(...args)))

const profileSummary = profileData => composeP(createProfileSummary, getMKAProfile)(profileData)

现在我想要做的是检查我的输入的 profileData 是否是某个字符串,例如“cantbesearched”我想立即返回一个值到“profileSummary”变量而不是执行以前的函数...

是否可以创建一个“filterWords”函数,将其放在合成前面,如下所示:

const profileSummary = profileData => composeP(createProfileSummary, getMKAProfile, filterWords)(profileData)

如果检测到某些单词,则跳过左侧之前的函数,然后返回一个值。

最佳答案

Is it possible to create a "filterWords" function to be put it in front of the composition?

没有。您想要做的是分支,这是函数组合不可能实现的。

您可以做的是编写适用于提供错误路径的类型的函数,例如MaybeEither。 (您还可以将异常视为每种类型的内置错误路径,因此只需抛出)。
哦等等,你已经在这样做了!您没有编写简单的函数组合 compose,您编写了使用单子(monad) Kleisli 组合的 composeP - 并且 promise 确实有这样的错误路径:

function filterWords(word) {
return word == "cantbesearched"
? Promise.reject(new Error("filtered for your safety"))
: Promise.resolve(word);
}

关于javascript - 函数组合提前返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49181763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com