Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的事件侦听器获胜';在ES6中使用Promise时,在一个事件之后是否会持续?_Javascript_Promise_Es6 Promise - Fatal编程技术网

Javascript 为什么我的事件侦听器获胜';在ES6中使用Promise时,在一个事件之后是否会持续?

Javascript 为什么我的事件侦听器获胜';在ES6中使用Promise时,在一个事件之后是否会持续?,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我有以下代码(一个简单的代码): 代码: var myPromise=新承诺(函数(成功,错误){ document.getElementById(“成功”).addEventListener(“单击”,函数)(){ 成功({ msg:“这就是成功”, 代码:100 }); }); document.getElementById(“错误”).addEventListener(“单击”,函数)(){ 错误({ msg:“这是错误”, 代码:10 }); }); }); console.log(“

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

代码:

var myPromise=新承诺(函数(成功,错误){
document.getElementById(“成功”).addEventListener(“单击”,函数)(){
成功({
msg:“这就是成功”,
代码:100
});
});
document.getElementById(“错误”).addEventListener(“单击”,函数)(){
错误({
msg:“这是错误”,
代码:10
});
});
});
console.log(“你好”);
myPromise.then(功能(内容){
console.log(content.msg);
});
myPromise.catch(函数(内容){
console.log(content.code);
});
成功

Error
EventListener存在,但不会再次调用Error/Success函数。我添加了一个
console.info
-语句来显示正在调用EventListener

var myPromise=新承诺(函数(成功,错误){
document.getElementById(“成功”).addEventListener(“单击”,函数)(){
console.info(“称为成功”);
成功({
msg:“这就是成功”,
代码:100
});
});
document.getElementById(“错误”).addEventListener(“单击”,函数)(){
控制台信息(“称为错误”);
错误({
msg:“这是错误”,
代码:10
});
});
});
console.log(“你好”);
myPromise.then(功能(内容){
console.log(content.msg);
});
myPromise.catch(函数(内容){
console.log(content.code);
});
成功

Error
EventListener存在,但不会再次调用Error/Success函数。我添加了一个
console.info
-语句来显示正在调用EventListener

var myPromise=新承诺(函数(成功,错误){
document.getElementById(“成功”).addEventListener(“单击”,函数)(){
console.info(“称为成功”);
成功({
msg:“这就是成功”,
代码:100
});
});
document.getElementById(“错误”).addEventListener(“单击”,函数)(){
控制台信息(“称为错误”);
错误({
msg:“这是错误”,
代码:10
});
});
});
console.log(“你好”);
myPromise.then(功能(内容){
console.log(content.msg);
});
myPromise.catch(函数(内容){
console.log(content.code);
});
成功

错误
在承诺中添加事件侦听器是个坏主意。因为每次单击该按钮时,都会覆盖自己的处理程序,所以下次它就不起作用了。只有当这些处理程序所匹配的元素消失时,才应添加新的处理程序。在状态更改没有任何更改之后,承诺只能被解析/拒绝一次impact@Shilly初始化只发生一次。OP试图
解决/拒绝
承诺不止一个,从而扭转逻辑。为每个按钮添加一个处理程序,并让它解析您以前创建的承诺。如果上一个承诺已解决,则每个处理程序都应创建一个新的承诺。一旦承诺被解决或拒绝,它将完成,并且不会响应事件处理程序中对
success
error
的任何后续调用。在承诺中添加事件侦听器是一个坏主意。因为每次单击该按钮时,都会覆盖自己的处理程序,所以下次它就不起作用了。只有当这些处理程序所匹配的元素消失时,才应添加新的处理程序。在状态更改没有任何更改之后,承诺只能被解析/拒绝一次impact@Shilly初始化只发生一次。OP试图
解决/拒绝
承诺不止一个,从而扭转逻辑。为每个按钮添加一个处理程序,并让它解析您以前创建的承诺。如果上一个承诺已经解决,则每个处理程序都应该创建一个新的承诺。一旦承诺被解决或拒绝,它就完成了,并且不会响应事件处理程序中对
success
error
的任何后续调用。好的,好的,好的。很好的一个,现在我明白了原因,而且事件侦听器仍然运行良好。谢谢,好的,好的。很好的一个,现在我明白了原因,而且事件侦听器仍然运行良好。谢谢