synchronization - 同步 GM_xmlhttpRequest 异步操作?

标签 synchronization greasemonkey tampermonkey gm-xmlhttprequest

我想得到一个 GM_xmlhttpRequest调用同步行为,但我无法让它像我期望的那样工作:

function myFunction (arg) {
    var a;

    GM_xmlhttpRequest ( {
        method:         "GET",
        url:            "http://example.com/sample/url",
        synchronous:    true,

        onload: function (details) {
            a = details.responseText;
        }
    } );

    return a;
}
b = myFunction ();
alert (b);

我从来没有得到任何返回 b这里;它是未定义的。我在这里遗漏了一些步骤吗?
我使用的是 Greasemonkey 的 v0.9.13 和 Firefox 的 v9.0.1。

最佳答案

刚刚在谷歌偶然发现了这个话题。

同步 GM_xmlhttpRequest 返回结果而不是在 onload-callback 中执行。

所以这是正确的:

var details = GM_xmlhttpRequest({
  method:"GET",
  url:"http://site.com/sample/url",
  synchronous: true
});
a = details.responseText;

您在开始时创建 var "a",永远不要填充它并返回它。因此,它是未定义的。

关于synchronization - 同步 GM_xmlhttpRequest 异步操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778267/

相关文章:

java - synchronized 语句是做什么用的?

java - 双重检查锁定,NetBeans 让我感到困惑?

android - 如何将 SQLite 数据库从 Android 复制到 MySQL 数据库(复制/同步)

javascript - 替换 RSS 阅读器 (InoReader) 中的 Facebook 缩略图

javascript - YouTube 上的 Chrome 扩展程序和 Tampermonkey

jquery - 使用 jQuery 和 contains() 进行全字匹配

c - Solaris 上的安德森队列锁

javascript - 如何在 greasemonkey 中进行同步 AJAX 调用?

javascript - 如何检测哪个用户脚本管理器正在运行脚本

greasemonkey - 在所有地址上运行我自己的用户脚本有风险吗?