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

GM_xmlhttpRequest 加在setInterval里出错了

[复制链接]
  • TA的每日心情
    开心
    2022-6-2 15:24
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    13

    主题

    56

    回帖

    79

    积分

    初级工程师

    积分
    79

    油中2周年

    发表于 2022-3-14 10:37:04 | 显示全部楼层 | 阅读模式
    悬赏5油猫币未解决
    按12345678910的顺序发出请求,不知道是因为网络卡了还是什么原因,返回可能的是1 2 3 3 3 6 7 8 9 10.
    zlet timer= setInterval(() => {

                GM_xmlhttpRequest({
                    method: "get",
                    url: "网址",//网址1.网址2.网址3.网址4.网址i

                    onload: function(r) {
                        var str=r.responseText
                        console.log(str)
                        i++
                    }

                });

    }, 500) //

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

    [LV.1]初来乍到

    22

    主题

    881

    回帖

    1379

    积分

    荣誉开发者

    积分
    1379

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

    发表于 2022-3-14 11:16:51 | 显示全部楼层
    因为请求有快慢吧,setInterval是异步的,可能345是差不多同时完成的,所以读到的i都一样,改成闭包试试:
    1. let j = 0;
    2. setInterval(() => {
    3.     j++;
    4.     (function(i) {
    5.         //GM_xmlhttpRequest
    6.     })(j);
    7. }, 500);
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-6-2 15:24
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    13

    主题

    56

    回帖

    79

    积分

    初级工程师

    积分
    79

    油中2周年

    发表于 2022-3-14 11:21:49 | 显示全部楼层
    cxxjackie 发表于 2022-3-14 11:16
    因为请求有快慢吧,setInterval是异步的,可能345是差不多同时完成的,所以读到的i都一样,改成闭包试试:
    ...

    谢谢大佬,嘿嘿,这就去试试
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-7-6 11:14
  • 签到天数: 253 天

    [LV.8]以坛为家I

    41

    主题

    318

    回帖

    2178

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    积分
    2178

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

    发表于 2022-3-14 12:18:12 | 显示全部楼层
    本帖最后由 Hangover 于 2022-3-14 15:33 编辑


    推荐使用油猴函数封装库:https://github.com/scriptscat/lib/blob/main/src/gm/README.md
    已修改:
    1. // ==UserScript==
    2. // @name         New Userscript
    3. // @namespace    https://bbs.tampermonkey.net.cn/
    4. // @version      0.1.0
    5. // @description  try to take over the world!
    6. // @author       You
    7. // @match        https://scriptcat.org/search
    8. // @grant        unsafeWindow
    9. // @grant        GM_xmlhttpRequest
    10. // @require      https://cdn.jsdelivr.net/npm/scriptcat-lib@1.1.3/dist/gm.js
    11. // ==/UserScript==

    12. //顺序执行请求

    13. async function Ajax() {
    14.     let arr = ['url1', 'url2', 'url3', 'url4', 'url5']
    15.     for (let i = 0; i < arr.length; i++) {
    16.         await gm.ajax(arr[i]).then(res => {
    17.             console.log(i, res)
    18.         })
    19.     }
    20. }
    21. Ajax()
    复制代码



    点评

    ggnb!  发表于 2022-3-14 13:41
    一之哥牛逼!!!  发表于 2022-3-14 12:19
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4193

    回帖

    4059

    积分

    管理员

    积分
    4059

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-3-14 13:42:19 | 显示全部楼层
    Hangover 发表于 2022-3-14 12:18
    推荐使用油猴函数封装库:https://github.com/scriptscat/lib/blob/main/src/gm/README.md

    不过哥哥又封装一层Ajax干什么?
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-7-6 11:14
  • 签到天数: 253 天

    [LV.8]以坛为家I

    41

    主题

    318

    回帖

    2178

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    积分
    2178

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

    发表于 2022-3-14 13:46:29 | 显示全部楼层
    本帖最后由 Hangover 于 2022-3-14 13:48 编辑
    王一之 发表于 2022-3-14 13:42
    不过哥哥又封装一层Ajax干什么?

    封装起来不是更方便传参吗   await 只能在 async 语句里面使用吧
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4193

    回帖

    4059

    积分

    管理员

    积分
    4059

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-3-14 13:49:04 | 显示全部楼层
    Hangover 发表于 2022-3-14 13:46
    封装起来不是更方便传参吗

    单是这里的话,传的参数是一样的

    不过本身也挺方便的了
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-7-6 11:14
  • 签到天数: 253 天

    [LV.8]以坛为家I

    41

    主题

    318

    回帖

    2178

    积分

    荣誉开发者

    累计点滴改进,迈向完美品质。

    积分
    2178

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

    发表于 2022-3-14 13:52:06 | 显示全部楼层
    王一之 发表于 2022-3-14 13:49
    单是这里的话,传的参数是一样的

    不过本身也挺方便的了

    gm.ajax里面能直接放数组吗
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 13:37
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4193

    回帖

    4059

    积分

    管理员

    积分
    4059

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2022-3-14 13:58:28 | 显示全部楼层
    Hangover 发表于 2022-3-14 13:52
    gm.ajax里面能直接放数组吗

    不能 不过Ajax这也是直接放url呀

    我的意思是 function Ajax 这封装没意义
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

    发表回复

    本版积分规则

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