【发布时间】:2021-09-23 03:51:51
【问题描述】:
我在函数中使用 Promise 以确保当我尝试修复某些 CSS 样式时,函数加载的动态元素可用。但是 fixStyling 永远不会执行。我究竟做错了什么?有没有更好的方法来做到这一点?
const fixStyling = function(){
console.log('change style');
let surveyBody = document.querySelector('.survey-page-body');
surveyBody.style.marginTop = "-60px";
}
function loadSM() {
return new Promise(function(resolve) {
(function(t,e,s,n){var o,a,c;t.SMCX=t.SMCX||[],e.getElementById(n)||(o=e.getElementsByTagName(s),a=o[o.length-1],c=e.createElement(s),c.type="text/javascript",c.async=!0,c.id=n,c.src="https://widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgd1CDe7_2F_2F4snTovolmrpjpv7u54RGrphPxAqunQp3_2FUPz.js",a.parentNode.insertBefore(c,a))})(window,document,"script","smcx-sdk");
});
}
loadSM().then(fixStyling());
【问题讨论】:
-
.then 接受回调。您正在传入一个被调用的函数。尝试删除 ()。
-
很棒的捕获@Invizi 也许指向需要从哪里删除它会帮助他/她,例如尝试删除 () 并使其成为
loadSM().then(fixStyling);。只是我的一点帮助,以使您的答案完整。和平!! -
感谢@Invizi 和@Avinash!我实际上也尝试过,但它仍然跳过了 fixStyling,这让我想知道 Promise 是否是问题,但我正在使用 resolve,所以我不知所措。
标签: javascript async-await promise