我可以从外面解决承诺吗?

时间:2016-06-24 09:41:34

标签: promise ecmascript-6 es6-promise

使用ES2015,我可以从外部解析承诺 ,即在创建后触发解决方案吗?

const promise = new Promise();
promise.then(() => foo());
promise.resolve(); // foo() gets executed

2 个答案:

答案 0 :(得分:4)

是的,你可以。

let resolvePromise = null;
const promise = new Promise(resolve => resolvePromise = resolve);
promise.then(foo => console.log(foo));
resolvePromise('bar');

答案 1 :(得分:0)

当然可以。只需参考外部函数并调用它。 由于函数是对象(在变量中存储为引用),我们可以在外部引用它之后从外部调用resolve函数。

 var a;
    function b(){
        var c = new Promise( function(resolve, reject){
            a=resolve;
        });
        return c;
    }
    b().then((data) => {
    console.log(data);
    }
    );
    a("hai");