保存承诺解决功能

时间:2017-09-06 15:59:45

标签: javascript function callback promise

我一直在尝试使用ES6 promises创建一个事件发射器,但是当第二次调用保存的响应时它不会返回任何内容。

var z;
function test(){
    return new Promise((resolve) => {
        z = resolve;
    });
}

test().then(()=> console.log('aaaaaaaaaaaaaaaaaaaaaaaa') )

console.log(z) // ƒ () { [native code] }
z(); // aaaaaaaaaaaaaaaaaaaaaaaa
z(); // <empty>

1 个答案:

答案 0 :(得分:2)

  

第二次调用保存的响应时

承诺只能一次。一旦承诺得到解决(解决或拒绝),那就是它;它的状态永远不会改变。传递给promise执行程序的resolvereject函数的后续调用将被忽略。 (有些人宁愿他们扔,但他们没有。)

如果你想要一个事件发射器,承诺只是错误的技术,因为事件可能不止一次发生。