jQueryは実際にpromiseを介してこれを行うことができます。コードを変更するだけです。
あなたがコードを所有し、すべてが同じドメインに住んでいると仮定するか、クロスドメインの場合、サーバーはCORSを許可し、それぞれに。をロードし.ajax()
ます。次に.when()
、すべてのPromiseがロードされたことを検出し、.then()
すべてのPromiseの解決を実行するためのコールバックを追加するために使用します。
//you can provide a detailed setting for each using .ajax()'s second parameter
//however, jQuery can "smart detect" the content's dataType
var chart = $.ajax(urlOfChart), //script
theme = $.ajax(urlOfTheme), //css
data = $.ajax(urlOfData); //JSON
//we use .when() to check when all three resolves
//the arguments will be the jqXHR objects for the requests
//in the order they were given in the argument list
$.when(chart,theme,data).then(function(chart,theme,data){
//according to jQuery.ajax(), if a script is requested, it is evaluated
//and we still get it's plain text content
//so with respect to the script, we do no processing
//with the css, we get it as plain text since no dataType value handles it
//we embed it into the DOM by creating a style element
//and append the text in it for the styles to take effect on the page
$('<style type="text/css" />').html(theme).appendTo('head');
//as for the JSON, jQuery converts it into an object
//and is passed as an argument as the return data for that promise
//...everything is now requested, retrieved and prepared...
//everything else goes under here
});