A previous question revealed how to load in jQuery using native JavaScript. Mam powodzeniem stosowane kod oddzwonienia z odpowiedzi tam, replikowane tutaj:obciążenia z wykorzystaniem JavaScript Promises
// Anonymous "self-invoking" function
(function() {
// Load the script
var script = document.createElement("SCRIPT");
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
script.type = 'text/javascript';
document.getElementsByTagName("head")[0].appendChild(script);
// Poll for jQuery to come into existance
var checkReady = function(callback) {
if (window.jQuery) {
callback(jQuery);
}
else {
window.setTimeout(function() { checkReady(callback); }, 100);
}
};
// Start polling...
checkReady(function($) {
// Use $ here...
});
})();
Jak mogę osiągnąć to samo przy użyciu native JavaScript Promises?
Powód Pytam, ponieważ nagle potrzebuję odciąć się od wcześniejszego oddzwaniania i jest to cholerny bałagan. Mam nadzieję, że obietnice są lepszym sposobem i nie mam żadnego rzeczywistego zainteresowania używaniem platformy ładującej.
Oto co mam do tej pory, ale obietnica zawsze kończy się odrzucone: (. Przepraszam z góry za mój pełny ignorancji)
// This code doesn't work quite right.
// Poll for jQuery to come into existance using a Promise
var jQueryReady = new Promise(
function(resolve, reject) {
// Load jQuery
var script = document.createElement('SCRIPT');
script.type = 'text/javascript';
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(script);
if (window.jQuery) {
resolve("YAY");
} else {
reject("UGH");
}
});
jQueryReady.then(
function(success) {
console.log(success);
},
function(error) {
console.error("Really helpful error:", error);
});
Powinieneś kontynuować używanie starego kodu i tylko rozwiązać obietnicę, gdy jquery jest gotowy. Nie ma potrzeby odrzucania go w tym przypadku, chyba że jquery nie załaduje się po pewnym czasie. –