javascript - 为什么在 ES6 中使用 Promise 时,我的事件监听器在发生一个事件后不会持续?

标签 javascript promise es6-promise

我有以下代码(一个简单的代码):

代码:

var myPromise = new Promise(function(success, error) {
  document.getElementById("success").addEventListener("click", function() {
    success({
      msg: "This is success",
      code: 100
    });
  });
  document.getElementById("error").addEventListener("click", function() {
    error({
      msg: "This is error",
      code: 10
    });
  });
});
console.log("Hello");
myPromise.then(function(content) {
  console.log(content.msg);
});

myPromise.catch(function(content) {
  console.log(content.code);
});
<button id="success">Success</button>
<button id="error">Error</button>

第一次点击两个按钮将记录这是成功10

为什么第二次、第三次以及随后的时间点击任一两个按钮不会在控制台窗口中记录任何内容?为什么事件监听器似乎突然消失了?

仅供引用:我目前正在尝试ES6 中的 Promise 以了解它的工作原理。

谢谢。

最佳答案

EventListener 仅存在,不会再次调用错误/成功函数。我添加了一个 console.info - 语句来显示正在调用 EventListener。

var myPromise = new Promise(function(success, error) {
  document.getElementById("success").addEventListener("click", function() {
  console.info("called success" );
    success({
      msg: "This is success",
      code: 100
    });
  });
  document.getElementById("error").addEventListener("click", function() {
  console.info("called error" );
    error({
      msg: "This is error",
      code: 10
    });
  });
});
console.log("Hello");
myPromise.then(function(content) {
  console.log(content.msg);
});

myPromise.catch(function(content) {
  console.log(content.code);
});
<button id="success">Success</button>
<button id="error">Error</button>

关于javascript - 为什么在 ES6 中使用 Promise 时,我的事件监听器在发生一个事件后不会持续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42551854/

相关文章:

javascript - 如何针对我的案例使用 Express Error 中间件?

javascript - 使用 Vue CLI 在 Node js 上进行 Express session

Javascript Date 接受非数字年份 "aaaa-05-04"作为有效日期

javascript - ember 属性在 View 中不可用,仅 ID

javascript - FancyBox 无法打开外部页面的链接

javascript - 扩展 ES6 Promise 以将回调转换为延迟模式

javascript - Q Promise 等效于 BlueBird Promise.Bind()

javascript - 当错误可能未包含在 promise 中时,我如何使用 promise 来捕获错误?

javascript - 将 promise 链中的值传递给后续处理程序

javascript - promise 基础知识。如何 promise 异步 Node 代码?