我创建了一个函数来检查元素是否已经存在,如果不存在,请重复该函数:
function waitForElementToDisplay(selector) {
return new Promise(function (resolve,reject) {
if (document.querySelector(selector) != null) {
console.log('Element is displayed now');
resolve();
} else {
setTimeout(function () {
waitForElementToDisplay(selector,500);
},500);
}
})
}
我在Shepherd.js的beforeShowPromise
函数中使用了此函数。此功能让包裹等待下一个巡回步骤,直到诺言得以解决。 beforeShowPromise
函数如下所示:
beforeShowPromise: function () {
return new Promise(async function (resolve) {
const selector = '.exampleTemplates';
await waitForElementToDisplay(selector).then(() => {
console.log('Do something');
}).catch(err => {
console.log(err);
});
})
},
我要等到waitForElementToDisplay
函数被解析,以便可以解析Shepherd的功能。但是,正在调用.then
和.catch
函数。有人可以向我解释为什么它不起作用吗?