解析DOM事件上的javascript承诺
我一直在寻找答案,但找不到我的问题的答案(或者至少我不知道如何使其适用于我的问题)。因此我有以下功能:解析DOM事件上的javascript承诺,javascript,dom,promise,Javascript,Dom,Promise,我一直在寻找答案,但找不到我的问题的答案(或者至少我不知道如何使其适用于我的问题)。因此我有以下功能: Test.prototype.testing = function(){ return new Promise(function (resolve, reject){ document.getElementById("element").innerHTML = "<button onclick=\"\">Next</button>"; })
Test.prototype.testing = function(){
return new Promise(function (resolve, reject){
document.getElementById("element").innerHTML =
"<button onclick=\"\">Next</button>";
});
};
Test.prototype.testing=函数(){
返回新承诺(功能(解决、拒绝){
document.getElementById(“元素”).innerHTML=
“下一步”;
});
};
我怎样才能使承诺在点击按钮时得到解决?提前谢谢。你可以做到。通过在浏览器环境中使用CustomEvent API
function myPromiseReturningFunction() {
return new Promise(resolve => {
window.addEventListener("myCustomEvent", (event) => {
resolve(event.detail);
})
})
}
myPromiseReturningFunction().then(result => {
alert(result)
})
document.getElementById("element").addEventListener("click", () => {
window.dispatchEvent(new CustomEvent("myCustomEvent", {detail : "It works!"}))
})
下一步
更好的方法是在DOM中已有按钮,然后引用它。此时,只需将onclick
事件处理程序设置为resolve函数。(如果需要,也可以使用addEventListener
)
var elBtn=document.getElementById('resolver');
函数测试(){}
Test.prototype.testing=函数(){
返回新承诺(功能(解决、拒绝){
elBtn.onclick=解析;
});
};
var t=新测试();
t、 测试()。然后(x=>{
console.log('resolved!');
});代码>
点击我像这样的代码
函数测试(){}
Test.prototype.testing=函数(){
返回新承诺(功能(解决、拒绝){
const btn=document.createElement(“按钮”)
btn.innerHTML='Next'
btn.addEventListener('click',resolve');
document.getElementById(“元素”).appendChild(btn)
});
};
(新测试()).testing()
是否不使用innerHTML?那样的话,你就可以通过按钮直接调用resolve
?一个事件的承诺?我想你可以。如果您使用document.createElement(“按钮”)
创建该按钮,然后在单击时附加解析承诺的处理程序。它应该会起作用。
<p id="element"> Next </p>