ozon 发表于 2022-3-14 10:37:04

GM_xmlhttpRequest 加在setInterval里出错了

按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) //

cxxjackie 发表于 2022-3-14 11:16:51

因为请求有快慢吧,setInterval是异步的,可能345是差不多同时完成的,所以读到的i都一样,改成闭包试试:
let j = 0;
setInterval(() => {
    j++;
    (function(i) {
      //GM_xmlhttpRequest
    })(j);
}, 500);

ozon 发表于 2022-3-14 11:21:49

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

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

Hangover 发表于 2022-3-14 12:18:12

本帖最后由 Hangover 于 2022-3-14 15:33 编辑


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

//顺序执行请求

async function Ajax() {
    let arr = ['url1', 'url2', 'url3', 'url4', 'url5']
    for (let i = 0; i < arr.length; i++) {
      await gm.ajax(arr).then(res => {
            console.log(i, res)
      })
    }
}
Ajax()


王一之 发表于 2022-3-14 13:42:19

Hangover 发表于 2022-3-14 12:18
推荐使用油猴函数封装库:https://github.com/scriptscat/lib/blob/main/src/gm/README.md




不过哥哥又封装一层Ajax干什么?

Hangover 发表于 2022-3-14 13:46:29

本帖最后由 Hangover 于 2022-3-14 13:48 编辑

王一之 发表于 2022-3-14 13:42
不过哥哥又封装一层Ajax干什么?
{:4_102:}封装起来不是更方便传参吗   await 只能在 async 语句里面使用吧

王一之 发表于 2022-3-14 13:49:04

Hangover 发表于 2022-3-14 13:46
封装起来不是更方便传参吗

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

不过本身也挺方便的了

Hangover 发表于 2022-3-14 13:52:06

王一之 发表于 2022-3-14 13:49
单是这里的话,传的参数是一样的

不过本身也挺方便的了

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

王一之 发表于 2022-3-14 13:58:28

Hangover 发表于 2022-3-14 13:52
gm.ajax里面能直接放数组吗

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

我的意思是 function Ajax 这封装没意义
页: [1]
查看完整版本: GM_xmlhttpRequest 加在setInterval里出错了