Я не могу придумать никакого другого способа сделать это, кроме как сохранить какой-то уникальный ключ для каждого вызова API, который вы делаете, и затем хранить там информацию о вызове.Чтобы поддерживать чистоту глобального пространства имен, вы можете создать один объект верхнего уровня, затем выделить подобъекты для запроса в качестве свойств этого и дать каждому свойству ссылку на функцию:
function yqlHandler(json) {
// ...
}
var uid = 1;
function makeQuery(query, data) {
var key = 'query-' + uid++;
yqlHandler[key] = data;
yqlHandler[key].handler = yqlHandler;
var url = "http://query.yahooapis.com/v1/public/yql?q=" + query + "&callback=yqlHandler." + key + ".handler";
// ... make the JSONP call
}
Таким образом, вы получите this
, указывающий на объект «данные», используемый при вызове функции.Есть, конечно, другие, похожие способы сделать это.