我有以下代码(一个简单的代码):
代码:
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>
&#13;
点击第一次的两个按钮将记录 This is success
或10
。
为什么在第二次,第三次以及随后的时间点击两个按钮将不会在控制台窗口中记录任何内容?为什么事件监听器似乎突然消失了?
仅供参考:我目前正在尝试使用 ES6中的承诺来了解它是如何运作的。
谢谢。
答案 0 :(得分:2)
仅存在EventListener,不会再次调用Error / Success函数。我添加了一个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>