通过js创建一个按钮并将其作为模式插入主体,该按钮的Matrix4f m;
auto it = m.line_cbegin();
while(it != m.line_cend()) {
...
some_operation(*it) //*it is expected to be a Vector4d object
...
it++;
}
处理程序是promise范围内的resolve函数。
当我不将解析度添加到窗口onclick
时,window.resolveAlert = resolve
将引发未找到的错误。
还有另一种方法可以避免将resolve函数绑定到onclick
来调用作用域函数吗?
window
答案 0 :(得分:4)
请改用Javascript正确地连接事件侦听器-使用addEventListener
,然后可以将resolve
变量传递给它:
function showRatingAlert() {
return new Promise(resolve => {
const content = `
<div id="rating-alert">
<button>
Sure
</button>
</div>
`;
const tag = document.createElement('div');
tag.innerHTML = content;
// tag.querySelector('button').addEventListener('click', resolve);
// you can ensure the listener only runs once by passing { once: true }, if you wish:
tag.querySelector('button').addEventListener('click', resolve, { once: true });
document.body.appendChild(tag);
})
}
showRatingAlert()
.then(() => console.log('resolved'));
几乎应该避免使用内联处理程序-它们需要全局污染才能发挥作用,并且不能从附加侦听器的封闭范围中受益(如您所见)。