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

脚本猫_后台脚本_Promise返回值_例子

[复制链接]
  • TA的每日心情
    奋斗
    2024-5-29 00:06
  • 签到天数: 187 天

    [LV.7]常住居民III

    23

    主题

    33

    回帖

    223

    积分

    荣誉开发者

    积分
    223

    新人报道油中2周年荣誉开发者

    发表于 2024-4-30 13:31:03 | 显示全部楼层 | 阅读模式

    脚本猫,后台脚本,获取 另一个 函数内 Promise 返回值

    
    // ==UserScript==
    // @name         Pt_Sign
    // @namespace    pt_Sign2
    // @version      0.2.0
    // @description  sign
    // @author       24-4-30
    // @grant        GM_xmlhttpRequest
    // @grant        GM_notification
    // @grant       GM_log
    // @connect     test.com
    // @crontab      * * once * *
    
    // ==/UserScript==
    // 定时 脚本
    
    // 签到 函数,网址,网站名字
    function sign(url,website_name) {
    
        return new Promise((resolve, reject) => {
    
            // 定义目标URL
            let targetUrl = url; 
    
            // 发送GET请求
            GM_xmlhttpRequest({
    
                method: 'GET',
                url: targetUrl,
    
                onload: function(response) {
    
                    // 请求成功,显示返回的内容
                    // console.log(website_name + ' 返回的内容:');
    
                    // 网页 返回 文本
                    let webtext = response.responseText;
    
                    // 判断 成功 字符串, || 是逻辑或(OR)运算符,  btschool 魔力值
                    if(webtext.indexOf('到已得') != -1 || webtext.indexOf('魔力值') != -1  ) {
    
                        GM_notification(website_name + ' 签到 完成');
                        resolve( website_name + "_sign ok");
                        // 执行成功,并 返回值 ,返回到 主函数
                    } else {
    
                        // 签到错误 
                        console.log(website_name + "~~~~~~~~~" +webtext);
                        GM_notification(website_name + ' 签到 失败');
                        reject(website_name + "_sign fail");
    
                        // 执行失败,并 返回值 ,返回到 主函数
                    }
    
                },
                onerror: function(error) {
    
                    // 请求失败,显示错误信息
                    console.error(website_name + ' 请求失败:', error);
    
                    // 弹出提示框
                    GM_notification(website_name + ' 请求失败:', error);
    
                    reject(website_name + "_sign error"); 
                    // 执行失败,并返回错误原因
                }
    
            }); 
    
        });
    
    }
    
    return new Promise(async (resolve, reject) => {
    
        try {
    
            // 签到
            const end = await sign('https://test.com/index.php?action=addbonus', 'web name');
    
            GM_log("sign");
            resolve("sign -ok:",end);
    
        } catch (error) {
    
            //GM_log(error);
            reject("sign -error: " + error);
        }
    
    });
    
  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 213 天

    [LV.7]常住居民III

    305

    主题

    4189

    回帖

    4056

    积分

    管理员

    积分
    4056

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

    发表于 2024-4-30 17:52:58 | 显示全部楼层
    ggnb

    哥哥可以再看看相关的文档学习:https://developer.mozilla.org/zh ... bal_Objects/Promise
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-29 00:06
  • 签到天数: 187 天

    [LV.7]常住居民III

    23

    主题

    33

    回帖

    223

    积分

    荣誉开发者

    积分
    223

    新人报道油中2周年荣誉开发者

    发表于 2024-4-30 18:29:50 | 显示全部楼层
    王一之 发表于 2024-4-30 17:52
    ggnb

    哥哥可以再看看相关的文档学习:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Referenc ...

    资料很详细,我常用 gpt 写个例子 ,测试下运行是否成功,感觉 较简便
    回复

    使用道具 举报

    发表回复

    本版积分规则

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