吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 600|回复: 6
收起左侧

[求助] 关于油猴脚本的一个问问题,代码的处理结果没按顺序执行呢?

[复制链接]
donsllon 发表于 2024-6-27 19:32
[Java] 纯文本查看 复制代码
 if(zdm=="505")
        {
            zdnr=document.getElementById(indexnr).value.replace("▼a","");
            var arr505=zdnr.split(",")
            var other=arr505[1];
            var yuanwen=arr505[0];
            var translation;
            const url = 'https://findmyip.net/api/translate.php?text=' + encodeURIComponent(yuanwen);
                GM_xmlhttpRequest({
                    method: 'GET',
                    url: url,
                    onload: function(response) {
                        if (response.status == 200) {
                            var Jresponse = JSON.parse(response.responseText);
                            let translation = Jresponse.data.translate_result;
                            console.log(translation+"100");
                        }
                    },
                    onerror: function(error) {
                        console.error('翻译请求发生错误:', error);
                    }
                });
            console.log(translation+"100");
            if(other.substr(other.length-1,1)!=".")
            {
                if(other.substr(other.length-1,1)!=")"&&other.substr(other.length-1,1)!="-"&&other.substr(other.length-1,1)!='"')
                {
                    setInputValue(document.getElementById(indexnr), "▼a"+arr505[0]+"("+translation+"),"+arr505[1]+".")
                }
            }
            else
            {
                setInputValue(document.getElementById(indexnr), "▼a"+arr505[0]+"("+translation+"),"+arr505[1])
            }
        }

image.png
为什么,291行是后出的结果

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

涛之雨 发表于 2024-6-27 19:57
本帖最后由 涛之雨 于 2024-6-27 19:59 编辑

GM_xmlhttpRequest是异步函数。
更多细节和解决方案,请自行研究。。。

此外,substr 已被弃用
同上,更多细节和解决方案,请自行研究。。。

星峰 发表于 2024-6-27 20:00
最新的 发表于 2024-6-27 21:14
因为 JavaScript 中的 console.log 是异步执行的,而你的翻译请求是通过 GM_xmlhttpRequest 异步进行的
chr_233 发表于 2024-6-27 22:31
image.png

举个例子,像这样把GM_xmlhttpRequest包装成异步函数,然后用 await sendQmsg() 就可以顺序执行异步函数了
 楼主| donsllon 发表于 2024-6-28 10:09
本帖最后由 donsllon 于 2024-6-28 10:11 编辑
chr_233 发表于 2024-6-27 22:31
举个例子,像这样把GM_xmlhttpRequest包装成异步函数,然后用 await sendQmsg() 就可以顺序执行异步函 ...

这个方法是可以了,可出现一个新的问题了
[Java] 纯文本查看 复制代码
async function main1() {
                try {
                    this.fyjg = await translateText(yuanwen);
                    console.log(this.fyjg);
                } catch (error) {
                    console.error(error);
                }
                if(other.substr(-1,1)!=".")
                {
                    if(other.substr(-1,1)!=")"&&other.substr(-1,1)!="-"&&other.substr(-1,1)!='"')
                    {
                        console.log(this.fyjg+"100");
                      setInputValue(document.getElementById(indexnr), "▼a"+arr505[0]+"("+this.fyjg+"),"+arr505[1]+".")
                    }
                }
                else
                {
                    console.log(this.fyjg+"200");
                    setInputValue(document.getElementById(indexnr), "▼a"+arr505[0]+"("+this.fyjg+"),"+arr505[1])
                }
            }
            main1();
        }


setInputValue(document.getElementById(indexnr), "▼a"+arr505[0]+"("+this.fyjg+"),"+arr505[1]+".")
可这个代码又不执行了。
chr_233 发表于 2024-7-9 00:25
donsllon 发表于 2024-6-28 10:09
这个方法是可以了,可出现一个新的问题了
[mw_shl_code=java,true]async function main1() {
          ...

要确保在Promise里面调用了resolve或者reject,不然await不会返回,会一直阻塞
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-11 16:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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