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

求助作用域问题

[复制链接]
  • TA的每日心情
    开心
    昨天 11:35
  • 签到天数: 578 天

    [LV.9]以坛为家II

    2

    主题

    20

    回帖

    283

    积分

    高级工程师

    积分
    283

    油中2周年新人报道喜迎中秋油中3周年挑战者 lv2

    发表于 2023-2-5 12:58:50 | 显示全部楼层 | 阅读模式
    悬赏5油猫币已解决
     do {
            GM_xmlhttpRequest({
                url: FULL_URL,
                method: "GET",
                headers: getHeaders(),
                onload: function (xhr) {
                    let data = JSON.parse(xhr.responseText);
                    PAGE += 1;
                    setTimeout(() => {
                        data.data.forEach(arr => {
                            const avatar = arr.userInfo.userAvatar;
                            const time = new Date(arr.dateline * 1000);
                            const content = arr.message;
                            const username = arr.username;
                            $('#feed-detail').append(replyArea);
                        })
    
                    }, 1000);
                }
            });
        } while (data.data.length != 0);

    如上,请问哥哥们,怎么才能在循环里访问data
    通过ajax请求的结果要怎么返回出来存在外面的变量😭

    最佳答案

    查看完整内容

    GM_xhr是异步的,没法用do while来重复请求 可以把GM_xhr这个请求包装成一个函数 在onload里面判断length,不符合要求就再调用这个函数直到符合要求
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6763

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-2-5 13:30:43 | 显示全部楼层
    [油猴脚本开发指南]包装异步代码为同步代码
    https://bbs.tampermonkey.net.cn/thread-883-1-1.html
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 08:54
  • 签到天数: 812 天

    [LV.10]以坛为家III

    31

    主题

    552

    回帖

    1556

    积分

    荣誉开发者

    积分
    1556

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2023-2-5 12:58:51 | 显示全部楼层
    Wandering 发表于 2023-2-5 13:30
    [md]` Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'data')`
    data  ...

    GM_xhr是异步的,没法用do while来重复请求
    可以把GM_xhr这个请求包装成一个函数
    在onload里面判断length,不符合要求就再调用这个函数直到符合要求
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 08:54
  • 签到天数: 812 天

    [LV.10]以坛为家III

    31

    主题

    552

    回帖

    1556

    积分

    荣誉开发者

    积分
    1556

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2023-2-5 13:17:25 | 显示全部楼层
    let data;
     do {
            GM_xmlhttpRequest({
                url: FULL_URL,
                method: "GET",
                headers: getHeaders(),
                onload: function (xhr) {
                    data = JSON.parse(xhr.responseText);
                    PAGE += 1;
                    setTimeout(() => {
                        data.data.forEach(arr => {
                            const avatar = arr.userInfo.userAvatar;
                            const time = new Date(arr.dateline * 1000);
                            const content = arr.message;
                            const username = arr.username;
                            $('#feed-detail').append(replyArea);
                        })
    
                    }, 1000);
                }
            });
        } while (data.data.length != 0);

    在外部声明就行了

    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:35
  • 签到天数: 578 天

    [LV.9]以坛为家II

    2

    主题

    20

    回帖

    283

    积分

    高级工程师

    积分
    283

    油中2周年新人报道喜迎中秋油中3周年挑战者 lv2

    发表于 2023-2-5 13:30:30 | 显示全部楼层

    steven026 发表于 2023-2-5 13:17

    [md]```
    let data;
    do {

    Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'data')
    data 还是未定义😵

    我想通过请求获得一个array对象,如果长度不为0就继续请求。哥哥有什么好的实现方法吗

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5966

    回帖

    6763

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6763

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2023-2-5 13:31:11 | 显示全部楼层
    steven026 发表于 2023-2-5 13:17
    [md]```
    let data;
    do {

    抓到哥哥偷懒了!
    这次答案不干净
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 08:54
  • 签到天数: 812 天

    [LV.10]以坛为家III

    31

    主题

    552

    回帖

    1556

    积分

    荣誉开发者

    积分
    1556

    荣誉开发者新人进步奖油中2周年生态建设者新人报道挑战者 lv2油中3周年喜迎中秋

    发表于 2023-2-5 14:11:59 | 显示全部楼层

    李恒道 发表于 2023-2-5 13:31

    抓到哥哥偷懒了!
    这次答案不干净

    具体逻辑我看都没看……🙄

    回复

    使用道具 举报

    发表回复

    本版积分规则

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