实现一个 "promise always" return 函数
Implement a "promise always" return function
所以我有这两个函数 loadScriptWithBluebird
和 loadBluebird
,
loadScriptWithBluebird
应该对应用程序的主要流程是通用的,并且总是 return 一个承诺。
我想知道是否可以使用某种 a在 loadScriptWithBluebird
中使用 loadBluebird
的模式
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)
})
}
},
因此应用程序的流程将如下所示:
loadScriptWithBluebird('jquery').then(function(){
//...
});
谢谢。
不,你不能那样做,因为当你需要 return 承诺时,bluebird 还不可用。所以简单地忽略它,并依赖你的 loadScript
函数的调用者已经加载了 Bluebird。真的没有办法解决这个问题。
所以我有这两个函数 loadScriptWithBluebird
和 loadBluebird
,
loadScriptWithBluebird
应该对应用程序的主要流程是通用的,并且总是 return 一个承诺。
我想知道是否可以使用某种 a在 loadScriptWithBluebird
loadBluebird
的模式
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)
})
}
},
因此应用程序的流程将如下所示:
loadScriptWithBluebird('jquery').then(function(){
//...
});
谢谢。
不,你不能那样做,因为当你需要 return 承诺时,bluebird 还不可用。所以简单地忽略它,并依赖你的 loadScript
函数的调用者已经加载了 Bluebird。真的没有办法解决这个问题。