gpt4 book ai didi

javascript - 从 data.task 迁移到处理拒绝的 folktale

转载 作者:行者123 更新时间:2023-11-30 20:28:19 24 4
gpt4 key购买 nike

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);
})
);
};

我如何在 Task 的新 folktale 版本中完成它?我可以解决请求,但我该如何拒绝?我尝试了以下方法:

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

我现在看到了什么:没有什么。该程序不会出错,但也不会产生任何结果,它只是正常运行。

当使用 data.task(Task 的旧版本)时,我可以使用 reject,这就是它仍然在那里工作的原因。我现在如何使用新版本的 Task 执行此操作?

最佳答案

好吧,这真的很傻!出于某种原因,我无法立即在文档中找到此解决方案。这就是为什么我从 task 导入 rejected...

基本上task传来的resolver函数不仅有resolve,还有reject,本来应该很明显的,但是没有打开医生。

所以这里是工作代码:

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`);
},
});

关于javascript - 从 data.task 迁移到处理拒绝的 folktale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50634078/

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