Reputation: 11141
As indicated here:
How can I return a value from GM_xmlhttprequest?
I have a script that is asynchronous. I would like to pass a value INTO this function so that when the onload function is called I can use it to display in the web page.
The challenge I'm having is that this value will change each time I pass it into the function.
So, for instance if I passed in 'abc', 'def', 'xyz'.
I would end up with
xyz
xyz
xyz
instead of
abc
def
xyz
So, my question is, how would I pass a value into this function so that each call of the function knows what to display when it's done?
Upvotes: 2
Views: 1015
Reputation: 189457
You are looking for a closure:-
var urls = {"abc": "http://somehost/aurl",
"def": "http://somehost/otherurl",
"ghi": "http://someotherhost/aurl" }
for (var k in urls)
{
GM_xmlhttpRequest({
method: 'GET',
url: urls[k],
onload: function(text) {
return function(xhr) {
//Do stuff with xhr responseText etc and the text parameter
alert(text)
}
}(k)
}
}
This will alert "abc", "def" and "ghi" after each outstanding request completes.
Upvotes: 5