在里面
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);
})
);
};
我将如何在新的环境中实现这一点
folktale
版本
Task
? 我可以解决请求,但如何拒绝?我尝试了以下方法:
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
.
我现在看到了什么:
没有什么该程序不会出现故障,但也不会产生任何结果,只是正常运行。
使用时
数据任务
(Task的旧版本),我可以使用reject,这就是为什么它仍然在那里工作。使用新版本的Task,我现在该怎么做?