相关疑难解决方法(0)

在功能范围之外解决Javascript Promise

我一直在使用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)

这很好,但是有更简单的方法吗?如果没有,这是一个好习惯吗?

javascript promise es6-promise

248
推荐指数
13
解决办法
7万
查看次数

什么时候有人需要创建延期?

现在看来,创建延迟对象通常不鼓励使用ES6风格的Promise构造函数.是否存在使用延迟需要(或者更好地某种方式)的情况?

例如,在此页面上,给出以下示例作为使用延迟的理由:

function delay(ms) {
    var deferred = Promise.pending();
    setTimeout(function(){
        deferred.resolve();
    }, ms);
    return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)

但是,这可以使用Promise构造函数完成:

function delay(ms) {
    return new Promise(function(resolve, reject){
        setTimeout(function(){
            resolve();
        }, ms);
    });
}
Run Code Online (Sandbox Code Playgroud)

javascript promise ecmascript-6 bluebird es6-promise

5
推荐指数
1
解决办法
632
查看次数