我一直在使用ES6 Promise.

通常,promise 是这样构造和使用的

new Promise(function(resolve, reject){
    if (someCondition){
        resolve();
    } else {
        reject();
    } 
});

但为了灵活起见,我一直在做下面这样的事情,把决心放在外面.

var outsideResolve;
var outsideReject;
new Promise(function(resolve, reject) { 
    outsideResolve = resolve; 
    outsideReject = reject; 
});

后来呢

onClick = function(){
    outsideResolve();
}

这很好用,但是有没有更简单的方法呢?如果不是,这是否一个好做法呢?

推荐答案

很简单:

var promiseResolve, promiseReject;

var promise = new Promise(function(resolve, reject){
  promiseResolve = resolve;
  promiseReject = reject;
});

promiseResolve();

Javascript相关问答推荐

序列查找器功能应用默认值而不是读取响应

有条件的悲剧

if/else JavaScript中的条件行为

Phaser 3 console. log()特定游戏角色的瓷砖属性

我应该绑定不影响状态的函数吗?'

在服务器上放置了Create Reaction App Build之后的空白页面

在执行异步导入之前判断模块是否已导入()

无法使用单击按钮时的useState将数据从一个页面传递到另一个页面

如何在Angular拖放组件中同步数组?

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

有没有一种直接的方法可以深度嵌套在一个JavaScript对象中?

使用自动识别发出信号(&Q)

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

将嵌套数组的元素乘以其深度,输出一个和

我的NavLink活动类在REACT-ROUTER-V6中出现问题

P5play SecurityError:无法从';窗口';读取命名属性';Add';:阻止具有源的帧访问跨源帧

不允许在对象文本中注释掉的属性

如何缩小函数中联合返回类型的范围

如何在HTML中使用rxjs显示动态更新

在使用Jest进行测试时,在Express应用程序中未定义Multer