我一直在使用ES6 Promise.
通常,Promise是这样构造和使用的
new Promise(function(resolve, reject){
if (someCondition){
resolve();
} else {
reject();
}
});
Run Code Online (Sandbox Code Playgroud)
但我一直在做类似下面的事情,为了灵活性而采取外面的决心.
var outsideResolve;
var outsideReject;
new Promise(function(resolve, reject) {
outsideResolve = resolve;
outsideReject = reject;
});
Run Code Online (Sandbox Code Playgroud)
然后
onClick = function(){
outsideResolve();
}
Run Code Online (Sandbox Code Playgroud)
这很好,但是有更简单的方法吗?如果没有,这是一个好习惯吗?
我知道推迟分离承诺状态控制和处理,这里使用Q作为例子,承诺返回的承诺Q.defer().promise和Q.Promise完全不同,为什么设计这样?这两个"承诺"有什么区别
提前致谢
PS:我目前正在开发Promise库,欢迎使用issws和PRS:https://github.com/XiaomingJS/Xiaoming.Promise