我有以下代码(一个简单的代码):
代码:
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/