【问题标题】:Saving promise resolve function [duplicate]保存承诺解决功能[重复]
【发布时间】:2017-09-07 00:03:46
【问题描述】:

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

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

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

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

【问题讨论】:

  • promise 的本质是它们只包含一个值。一个承诺只能解决一次。

标签: javascript function callback promise


【解决方案1】:

第二次调用保存的响应时

承诺仅结算一次。一旦一个承诺得到解决(解决或拒绝),就是这样;它的状态永远不会再改变。随后对传递给承诺执行器的resolvereject 函数的调用将被忽略。 (有些人更喜欢扔,但他们不会。)

如果你想要一个事件发射器,那么 Promise 就是一种错误的技术,因为事件可以发生不止一次。

【讨论】:

    猜你喜欢
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 2018-07-29
    • 1970-01-01
    • 2020-06-21
    • 2016-04-16
    相关资源
    最近更新 更多