Javascript 从data.task迁移到folktale处理拒绝

Javascript 从data.task迁移到folktale处理拒绝,javascript,functional-programming,folktale,Javascript,Functional Programming,Folktale,在data.task包中,我可以解析或拒绝api调用,如下所示: import Task from 'data.task'; import fs from 'fs'; const readFile = (filename, enc) => { return new Task((rej, res) => fs.readFile(filename, enc, (err, contents) => { err ? rej(err) : res(content

data.task
包中,我可以解析或拒绝api调用,如下所示:

import Task from 'data.task';
import fs from 'fs';

const readFile = (filename, enc) => {
  return new Task((rej, res) =>
    fs.readFile(filename, enc, (err, contents) => {
      err ? rej(err) : res(contents);
    })
  );
};
在新的
民间故事
版本的
任务
中,我将如何实现这一点?我可以解决请求,但如何拒绝?我尝试了以下方法:

const {task, rejected} = require('folktale/concurrency/task');
import fs from 'fs';

const readFile = (filename, enc) => {
  return task(res => {
    fs.readFile(filename, enc, (err, contents) => {
      err ? rejected(err) : res.resolve(contents);
    });
  });
};

const writeFile = (filename, contents) => {
  return task(res => {
    fs.writeFile(filename, contents, (err, success) => {
      err ? rejected(err) : res.resolve(success);
    });
  });
};

const app = readFile('FILE_DOESNOT_EXIST.json', 'utf-8')
  .map(contents => contents.replace(/8/g, '6'))
  .chain(contents => writeFile('config1.json', contents));

app.run().listen({
  onCancelled: () => {
    console.log('the task was cancelled');
  },
  onRejected: () => {
    console.log('something went wrong');
  },
  onResolved: value => {
    console.log(`The value is Good`);
  },
});
当我给出一个不存在的文件时,onRejected处理程序不会被调用

我希望看到什么: 因为我让程序读取了一个不存在的文件,所以它应该运行onRejected,它应该记录
出了什么问题

我现在看到了什么: 没有什么。这个程序没有bug,但它也不会产生任何东西,它只是正常运行


当使用
data.task
(task的旧版本)时,我可以使用reject,这就是它仍然在那里工作的原因。使用新版本的Task,我现在该怎么做?

好吧,这真是太傻了!由于某些原因,我无法在文档上立即找到此解决方案。这就是为什么我从
任务导入了
拒绝的

基本上,来自任务的
解析器
函数不仅有
解析
,还有
拒绝
,这应该是显而易见的,但它不在文档上

下面是工作代码:

import {task} from 'folktale/concurrency/task';
import fs from 'fs';

const readFile = (filename, enc) => {
  return task(res => {
    fs.readFile(filename, enc, (err, contents) => {
      err ? res.reject() : res.resolve(contents);
    });
  });
};

const writeFile = (filename, contents) => {
  return task(res => {
    fs.writeFile(filename, contents, (err, success) => {
      err ? res.reject() : res.resolve(success);
    });
  });
};

const app = readFile('confg.json', 'utf-8')
  .map(contents => contents.replace(/8/g, '6'))
  .chain(contents => writeFile('config1.json', contents));

app.run().listen({
  onCancelled: () => {
    console.log('the task was cancelled');
  },
  onRejected: () => {
    console.log('something went wrong');
  },
  onResolved: value => {
    console.log(`The value is Good`);
  },
});