首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从data.task迁移到民间关于处理拒绝的故事

从data.task迁移到民间关于处理拒绝的故事
EN

Stack Overflow用户
提问于 2018-05-31 23:15:22
回答 1查看 68关注 0票数 1

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

代码语言:javascript
复制
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);
    })
  );
};

我将如何在新的folktale版本的Task中实现这一点?我可以解析请求,但如何拒绝?我尝试了以下几点:

代码语言:javascript
复制
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,它应该记录something went wrong

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

当使用data.task(任务的旧版本)时,我可以使用拒绝,这就是为什么它仍然在那里工作的原因。现在我如何使用新版本的任务来完成它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-31 23:22:14

好吧,这真是太傻了!由于某些原因,我无法立即在task上找到这个解决方案,这就是为什么我从task中导入了.

基本上,来自任务的resolver函数不仅有resolve,而且有reject,这应该是显而易见的,但不是在文档上。

下面是工作代码:

代码语言:javascript
复制
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`);
  },
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50634078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档