Вызовы JSONP не являются асинхронными по своей природе, поскольку они используют теги script
.Вы можете отложить их выполнение, добавив эти теги позже программно, как это:
sendJsonpRequest = function (url, callback) {
if (!(url && callback)) { return; }
// create script element
var script = document.createElement("script"),
jsonpCallback = "jsonp_" + new Date(),
done = false;
url = url.replace(/\&$/, "") + "&callback=" + jsonpCallback;
window[jsonpCallback] = function (args) {
callback(args);
// Garbage collect
window[jsonpCallback] = undefined;
try { delete window[jsonpCallback]; } catch (e) { }
if (head) { head.removeChild(script); }
};
script.src = url;
head.appendChild(script);
};