实现“承诺始终”返回功能

时间:2016-11-14 12:44:21

标签: promise bluebird

所以我有这两个函数loadScriptWithBluebirdloadBluebird
loadScriptWithBluebird应该是应用程序主流的通用,并且总是返回一个promise。我想知道是否有可能使用某种模式{{1在loadBluebird

loadScriptWithBluebird

因此应用程序的流程如下所示:

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) 
        })
    }

},

感谢。

1 个答案:

答案 0 :(得分:0)

不,你不能这样做,因为当你需要返回诺言时,蓝鸟还无法使用。所以简单地忽略它,并依赖于loadScript函数的调用者已经加载了Bluebird。这并不是真的有办法解决这个问题。