Sanctuary JS使用条件执行管道的2个步骤

我有一个S.pipe用于上传和处理传入的请求文件

S.pipe([
    getRequestFile,S.chain(saveTemporary),S.chain(checkIfIsImage),S.chain(addWatermarkToImage),// only execute on image
    S.chain(copyImageToPublicPath),// only execute on image
    S.chain(copyFileToPath),S.chain(formatResponse),]);

有两个特定的步骤addWatermarkToImagecopyImageToPublicPath仅应针对图像文件执行。

我知道,如果文件不是图像,则可以从Left返回checkIfIsImage,但这样做也将忽略copyFileToPathformatResponse

如果文件不是图像,我只想忽略addWatermarkToImagecopyImageToPublicPath

我该怎么做?

gangan123321 回答:Sanctuary JS使用条件执行管道的2个步骤

一般方法是使用诸如x => p (x) ? f (x) : g (x)之类的函数。 g可能是一个琐碎的函数,例如S.IS.Right

在您的情况下,代码类似于以下内容:

S.pipe ([
  getRequestFile,S.chain (saveTemporary),S.chain (file => file.type === 'image' ?
                   S.chain (copyImageToPublicPath)
                           (addWatermarkToImage (file)) :
                   S.Right (file)),S.chain (copyFileToPath),S.chain (formatResponse),])

请注意,在非图像情况下,必须返回S.Right (file)而不是file

本文链接:https://www.f2er.com/3165876.html

大家都在问