Javascript 等待承诺?
这里我的代码的问题是,当代码第一次运行时,我试图获取的dom元素并不总是存在,如果它不存在,那么承诺将永远不会兑现 在我试图得到承诺之前,我是否可以等待承诺的达成 我希望我的最后一行代码等待,并且只在我做出承诺时运行,这可能吗Javascript 等待承诺?,javascript,jquery,Javascript,Jquery,这里我的代码的问题是,当代码第一次运行时,我试图获取的dom元素并不总是存在,如果它不存在,那么承诺将永远不会兑现 在我试图得到承诺之前,我是否可以等待承诺的达成 我希望我的最后一行代码等待,并且只在我做出承诺时运行,这可能吗 function identify_home(){ const ytd_home_page = $("ytd-browse.style-scope.ytd-page-manager") if (ytd_home_page.length
function identify_home(){
const ytd_home_page = $("ytd-browse.style-scope.ytd-page-manager")
if (ytd_home_page.length){
for (var i=0; i<ytd_home_page[0].children.length; i++){
if (ytd_home_page[i].attributes[0].value === "home"){
return new Promise(res=>{
res(ytd_home_page[i])
})
}
}
}
}
identify_home().then(res=>{
console.log(res)
})
函数标识_home(){
常量ytd_主页=$(“ytd browse.style scope.ytd页面管理器”)
if(年初至今主页长度){
对于(var i=0;i{
资源(年初至今主页[i])
})
}
}
}
}
识别_home()。然后(res=>{
console.log(res)
})
您需要返回函数产生的承诺。现在,您有条件地返回未定义
或承诺
编辑:我还不确定OP到底想做什么。在DOM查询中使用承诺没有任何意义。您的标记看起来像什么?你试图和DOM交互的方式看起来很奇怪。事实上我不明白你为什么在这种情况下使用承诺。这里没有异步。我怀疑你误解了承诺的作用。我想你认为承诺会等到事情发生。它不是这样做的。不确定是否要在调用tidentify_home()之前确保dom元素已经存在?必须在setInterval中轮询dom元素。找到元素后,清除间隔。代码?还是一个例子?我真的不需要承诺,只是想知道这是否是一种方式。只是为了不重写更多的代码