我一直在尝试使用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>
答案 0 :(得分:2)
第二次调用保存的响应时
承诺只能一次。一旦承诺得到解决(解决或拒绝),那就是它;它的状态永远不会改变。传递给promise执行程序的resolve
和reject
函数的后续调用将被忽略。 (有些人宁愿他们扔,但他们没有。)
如果你想要一个事件发射器,承诺只是错误的技术,因为事件可能不止一次发生。