【发布时间】:2020-12-03 04:50:49
【问题描述】:
这是一个集思广益的问题,正在寻找想法。
是否有任何方法可以将外部脚本中的同步函数转换为异步。
考虑用户脚本和用户脚本管理器的情况。
用户脚本使用同步GM_getValue 函数,用户脚本开发人员不愿意将代码更新为异步GM.getValue API。
正在处理脚本的脚本管理器,不支持同步方式。
有没有办法以异步方式处理代码?
例子:
function run() {
const a = GM_getValue('one');
}
- 是否有可能通过脚本管理器暂停该函数,直到异步响应可用?
- 有没有办法解析脚本并将相关函数转换为async/await? (正则表达式容易出错)
- 有没有办法覆盖该函数并将其替换为异步版本?
例如
async function run() {
const a = await GM_getValue('one');
}
- 还有其他想法吗?
在 cmets 之后更新示例
// ==UserScript==
// @name My Script
// @match http://www.example.org/*
// @grant GM_getValue
// ==/UserScript==
function run() {
const b = GM_getValue("one");
if (b && b > a) {
// do somthig
}
else {
// do something else
}
return b;
}
const a = 5;
const c = run();
const d = GM_getValue("two");
const e = parseInt(d);
if (d > a) {
// do somthig
}
else {
// do something else
}
function sum(a, b) {
return a + b;
}
const f = sum(2, 5);
【问题讨论】:
-
async function run() { const a = await GM_getValue('one'); }有什么问题? -
@FZs 用户脚本代码不受脚本管理器控制。
标签: javascript