gpt4 book ai didi

javascript - 如何在 executor 函数中不添加事件处理程序的情况下将 Promises 与“click”事件一起使用?

转载 作者:行者123 更新时间:2023-12-04 02:18:11 27 4
gpt4 key购买 nike

编辑:试图澄清这个问题并缩短它——我输入了一些代码来表明我试图解决这个问题,但我认为它只会混淆一些事情。

我是 Promise 新手,我正在尝试将一些现有代码(这很简单)转换为使用 Promise。

我想使用 Promise 将按钮单击链接到程序的其他部分,也就是说,我想将单击视为异步事件(例如,类似于 ajax 调用)。如何做到这一点?

从 MDN 文档中,promise 基本上是这样工作的

function myAsyncFunction(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onload = () => resolve(xhr.responseText);
xhr.onerror = () => reject(xhr.statusText);
xhr.send();
});
}

我完全理解这一点。据我了解,以下内容将起作用
function myPromiseGenerator() {
return new Promise((resolve, reject) => {
this.myButton.addEventListener('click',function(e) {
/// do something to process the answer
resolve(something);
}
});
}

但是如何删除事件监听器?我只想添加一次事件监听器,而不是在每次调用 myPromiseGenerator 时添加但我不知道如何使它工作。

一般来说,做我想做的事情的最佳方法是什么?谢谢你的帮助。

最佳答案

只需使用 once事件监听器的选项:

function myPromiseGenerator() {
return new Promise((resolve, reject) => {
this.myButton.addEventListener('click',function(e) {
/// do something to process the answer
resolve(something);
}, {once: true});
});
}

关于javascript - 如何在 executor 函数中不添加事件处理程序的情况下将 Promises 与“click”事件一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51001272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com