2016-11-14 4 views
1

So habe ich diese 2 Funktionen loadScriptWithBluebird und loadBluebird,
loadScriptWithBluebird sollten für den Hauptstrom der Anwendung generisch sein, und wird immer ein Versprechen zurück.
Ich frage mich, ob es möglich ist, mit irgendeiner Art von einem Muster loadBluebird innen loadScriptWithBluebirdImplementieren ein „Versprechen immer“ Rückkehrfunktion

function loadBluebird(callback){ 
    //load the script and callback ... 
    script.onload = function() { 
     callback(); 
    }; 
} 

function loadScriptWithBluebird (src){ 

    if(isBluebirdAvailable()){ 
     return new Bluebird(function(resolve, reject){ 
      //load the script and resolve ... 
      script.onload = function() { 
       resolve(); 
      }; 
     }); 
    }else{ 
     //issue starts here since i obviously cannot return inside the callback 
     loadBluebird(function(){ 
      loadScriptWithBluebird(src) 
     }) 
    } 

}, 

zu verwenden, um die Strömung der Anwendung wird wie folgt aussehen:

loadScriptWithBluebird('jquery').then(function(){ 
    //... 
}); 

Dank.

Antwort

0

Nein, das geht nicht, da bluebird noch nicht verfügbar ist, wenn Sie das Versprechen zurückgeben müssen. Ignorieren Sie das einfach und verlassen Sie sich darauf, dass der Anrufer Ihrer loadScript-Funktion Bluebird bereits geladen hat. Es gibt nicht wirklich einen Weg um dies.

Verwandte Themen