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) //
因为请求有快慢吧,setInterval是异步的,可能345是差不多同时完成的,所以读到的i都一样,改成闭包试试:
let j = 0;
setInterval(() => {
j++;
(function(i) {
//GM_xmlhttpRequest
})(j);
}, 500); cxxjackie 发表于 2022-3-14 11:16
因为请求有快慢吧,setInterval是异步的,可能345是差不多同时完成的,所以读到的i都一样,改成闭包试试:
...
谢谢大佬,嘿嘿,这就去试试 本帖最后由 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()
Hangover 发表于 2022-3-14 12:18
推荐使用油猴函数封装库:https://github.com/scriptscat/lib/blob/main/src/gm/README.md
不过哥哥又封装一层Ajax干什么? 本帖最后由 Hangover 于 2022-3-14 13:48 编辑
王一之 发表于 2022-3-14 13:42
不过哥哥又封装一层Ajax干什么?
{:4_102:}封装起来不是更方便传参吗 await 只能在 async 语句里面使用吧 Hangover 发表于 2022-3-14 13:46
封装起来不是更方便传参吗
单是这里的话,传的参数是一样的
不过本身也挺方便的了 王一之 发表于 2022-3-14 13:49
单是这里的话,传的参数是一样的
不过本身也挺方便的了
gm.ajax里面能直接放数组吗 Hangover 发表于 2022-3-14 13:52
gm.ajax里面能直接放数组吗
不能 不过Ajax这也是直接放url呀
我的意思是 function Ajax 这封装没意义
页:
[1]