Javascript 等待承诺?

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

这里我的代码的问题是,当代码第一次运行时,我试图获取的dom元素并不总是存在,如果它不存在,那么承诺将永远不会兑现

在我试图得到承诺之前,我是否可以等待承诺的达成

我希望我的最后一行代码等待,并且只在我做出承诺时运行,这可能吗

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元素。找到元素后,清除间隔。代码?还是一个例子?我真的不需要承诺,只是想知道这是否是一种方式。只是为了不重写更多的代码