Синхронный GM_xmlhttpRequest действует асинхронно? - PullRequest
2 голосов
/ 08 января 2012

Я пытаюсь заставить вызов 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.

1 Ответ

5 голосов
/ 12 сентября 2013

Просто наткнулся на эту тему в Google.

Синхронный GM_xmlhttpRequest ВОЗВРАЩАЕТ результат вместо выполнения его в обратном вызове onload.

Так что это было бы правильно:

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

Вы создаете переменную "a" в начале, никогда не заполняете ее и не возвращаете Следовательно, оно не определено.

...