上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

ajaxHooker更新版本后有问

[复制链接]
  • TA的每日心情
    无聊
    2023-11-24 10:55
  • 签到天数: 61 天

    [LV.6]常住居民II

    14

    主题

    30

    回帖

    113

    积分

    中级工程师

    积分
    113
    发表于 2023-3-5 14:57:48 | 显示全部楼层 | 阅读模式
    悬赏1油猫币已解决
            request.response = res => {
                // console.log(res);
                console.log(res.response.data.tasks);  //原始是39
    
                let tasks = res.response.data.tasks;
    
                //弃用任务id
                const discardTasks = ['100421', '100410', '100409', '100400', '100399', '100382', '100381', '100380', '100376', '100370', '100365', '100364',
                    '100363', '100362', '100361', '100360', '100359', '100358', '100357', '100356', '100352'];
    
                //过滤弃用任务id
                const result = tasks.filter(task => {
    
                    if (!discardTasks.includes(task.task_id + '')) {
    
                        return task;
    
                    }
    
                });
                console.log(result); //自己修改后是18
    
                // result.push(newTask);
    
                res.response.data.tasks = result; //这里没成功
    
                console.log(res.response.data.tasks); //还是输出39
    
                //console.log(result.length);
    
                //value.response.data.total = 20;
    
            }

    我原来是1.0.2版本的,更新到最新后不生效了。。。

    image.png

    最佳答案

    查看完整内容

    这个response是json类型吧,xhr在获取引用类型的响应时每次返回的都是一个深拷贝(确保只读),即: 所以你前面的修改无法影响后面的读取。解决办法是保存一下response引用,然后在最后做一次赋值操作: 这样应该就可以了,后续我考虑能不能再优化一下。
  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    883

    回帖

    1381

    积分

    荣誉开发者

    积分
    1381

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-3-5 14:57:49 | 显示全部楼层
    这个response是json类型吧,xhr在获取引用类型的响应时每次返回的都是一个深拷贝(确保只读),即:
    1. xhr.response !== xhr.response
    复制代码

    所以你前面的修改无法影响后面的读取。解决办法是保存一下response引用,然后在最后做一次赋值操作:
    1. const response = res.response;
    2. //...
    3. response.data.tasks = result;
    4. //...
    5. res.response = response;
    复制代码

    这样应该就可以了,后续我考虑能不能再优化一下。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2023-11-24 10:55
  • 签到天数: 61 天

    [LV.6]常住居民II

    14

    主题

    30

    回帖

    113

    积分

    中级工程师

    积分
    113
    发表于 2023-3-8 13:59:24 | 显示全部楼层
    cxxjackie 发表于 2023-3-5 22:24
    这个response是json类型吧,xhr在获取引用类型的响应时每次返回的都是一个深拷贝(确保只读),即:

    所以 ...

    可以了,不过确实比之前版本多走一步。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    883

    回帖

    1381

    积分

    荣誉开发者

    积分
    1381

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2023-3-8 20:28:24 | 显示全部楼层
    player 发表于 2023-3-8 13:59
    可以了,不过确实比之前版本多走一步。

    这个应该是可以优化的,后面版本我可能会做一次重构,代码太乱了,目前就先这样吧。1.2.x的改动挺大的,虽然用法上看不太出来,我已经尽量确保了跟旧版表现一致。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表