搜索

查看: 3096|回复: 11

[JavaScript] chatGPT教我写compose函数的详细过程

[复制链接]
发表于 2023-5-4 11:49:22 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:49:22 3096 11 看全部
目录
  • 0 前言
  • 1 结果
  • 2 chatGPT过程概略
  • 3 最后
    0 前言
    昨天希望实现一个通用的compose函数,能够接受同步函数与异步函数,并且通过异步函数同步执行来是吸纳compose函数中的所有参数函数能顺序执行。
    比如compose(asyncFun3,syncFun2,asyncFun1,syncFunc0),四个函数能从右到作顺序执行,并且完成参数从右向左的传递和处理。
    昨儿花了很多,搜索到的结果质量很低,于是今天试了试chatGPT。
    只能说,chatGPT牛逼!
    当然,给出的答案有时会是错的,需要甄别。

    1 结果
    给出结果的示例代码,我这儿直接用纯js,并且全放在vue的mounted中了,可以自行按需修改——
    mounted() {
        // 定义一个通用的 compose 函数
        // 这个可以提取到公共函数去
        const compose = (...fns) => {
          return fns.reduceRight((prevFn, nextFn) => {
            return async (...args) => {
              return nextFn(await prevFn(...args));
            };
          });
        };
        const asyncFunc1 = () => {
          return new Promise(resolve => {
            setTimeout(() => {
              console.log('Async Function 1');
              resolve(100);
            }, 1000);
          });
        };
        const asyncFunc2 = num => {
          return new Promise(resolve => {
            setTimeout(() => {
              console.log('Async Function 2');
              resolve(num + 50);
            }, 500);
          });
        };
        const syncFunc = num => {
          console.log(num)
          console.log('Sync Function');
          return num + 10;
        };
        const syncFunc2 = num => {
          console.log(num)
          console.log('Sync Function 2');
          return num + 10;
        };
        const runAllAsyncFunctions = compose(asyncFunc2, syncFunc2, asyncFunc1, syncFunc);
        const run = async () => {
          const result = await runAllAsyncFunctions();
          console.log('All functions completed');
          console.log('Result:', result);
        };
        run();
      }

    运行结果如下——
    undefined
    Sync Function
    Async Function 1
    100
    Sync Function 2
    Async Function 2
    All functions completed
    Result: 160

    2 chatGPT过程概略

    2023022309451131.jpg

    2023022309451131.jpg


    2023022309451132.jpg

    2023022309451132.jpg


    可以看到,chatGPT会给出直接的代码实现,并给出一个示例。此外,还会对这个代码示例进行解释说明。

    2023022309451133.jpg

    2023022309451133.jpg


    而当我提出希望使用async/await来优化代码时,它也能做到代码的修改

    2023022309451134.jpg

    2023022309451134.jpg


    但是在代码生成过程中,它没有使用compose函数,于是让它再生成一份

    2023022309451235.jpg

    2023022309451235.jpg


    可以发现,在这里,chatGPT出现了第一次较大的错误,它给出的代码无法运行。
    但是可以将报错信息告知chatGPT,此时,它又能主动地修复bug,给出一份新的可运行的代码。

    2023022309451236.jpg

    2023022309451236.jpg


    不过此时,chatGPT丢失了一开始定义的compose函数,于是要求其用compose方法来实现

    2023022309451237.jpg

    2023022309451237.jpg


    但是我还有一些没懂的,于是继续提出问题,chatGPT继续给出详细的解释

    2023022309451238.jpg

    2023022309451238.jpg


    前面只是做了console.log,我希望它添加参数在函数间传递

    2023022309451239.jpg

    2023022309451239.jpg


    这里出现了第二处较大的问题
    这里的代码是没有开头我自己添加的那个Sync Function 2的,所以实际上返回值应是150,也就是解释中的数值,而非160

    2023022309451240.png

    2023022309451240.png


    这里出现了一处小问题,syncFunc的num+10未生效确实是150和160区别的原因,但是和num+50的解释是无关的

    2023022309451241.jpg

    2023022309451241.jpg


    指出这个逻辑错误后,它重新生成了一份更加详细的正确运行过程解释

    3 最后
    不得不说,chatGPT是真的牛逼
    虽然在语意逻辑、代码生成、代码运行等方面可能还存在一些问题
    但是已经非常好用了,远远胜于一般的传统搜索引擎
    可持续对话,搜索条件可持续添加,理解模糊语意,可进行代码定制化,代码按需优化,代码问题修复…
    而且还礼貌客气,解释详细,不厌其烦,奈斯
    今天是第一天注册chatgpt,第一次使用chatgpt,所以此文简要做个记录,写这篇文章都让我感觉自己就是个知识的搬运工了…
    所以,以后有问题,为何不问问万能的chatgpt呢?
    到此这篇关于chatGPT教我写compose函数的文章就介绍到这了,更多相关chatGPT写compose函数内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-30 03:53:52 | 显示全部楼层
    素色流年783 2023-6-30 03:53:52 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-6-30 10:30:36 | 显示全部楼层
    123456823 2023-6-30 10:30:36 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-6-30 11:55:18 | 显示全部楼层
    xinting_6ym 2023-6-30 11:55:18 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-30 12:51:00 | 显示全部楼层
    胡37 2023-6-30 12:51:00 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-30 21:15:13 | 显示全部楼层
    123456865 2023-6-30 21:15:13 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-6-30 22:05:24 | 显示全部楼层
    我是的十八簿 2023-6-30 22:05:24 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-7-1 00:30:06 | 显示全部楼层
    李志敏 2023-7-1 00:30:06 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-7-3 10:55:30 | 显示全部楼层
    惜颜705 2023-7-3 10:55:30 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-7-4 11:57:11 | 显示全部楼层
    Gordon520 2023-7-4 11:57:11 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表