zip11 发表于 2024-4-30 13:31:03

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

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


// ==UserScript==
// @name         Pt_Sign
// @namespace    pt_Sign2
// @version      0.2.0
// @descriptionsign
// @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);
    }

});


```

王一之 发表于 2024-4-30 17:52:58

ggnb

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

zip11 发表于 2024-4-30 18:29:50

王一之 发表于 2024-4-30 17:52
ggnb

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

资料很详细,我常用 gpt 写个例子 ,测试下运行是否成功,感觉 较简便
页: [1]
查看完整版本: 脚本猫_后台脚本_Promise返回值_例子