Javascript 在MutationObserver上返回true

Javascript 在MutationObserver上返回true,javascript,dom,return,dom-manipulation,mutation-observers,Javascript,Dom,Return,Dom Manipulation,Mutation Observers,我需要从下面的代码中返回true。但是,我很难从MutationObserver()返回任何值 我想在这里返回true,但我似乎无法返回true 要确认,我的代码确实有效,并且在满足我的条件时运行console.log(“显示假日按钮…”)。但是我必须找到一种方法返回真的 //WAIT FOR BUTTON FUNCTION function waitForElement(className, callBack){ window.setTimeout(function(){

我需要从下面的代码中
返回true
。但是,我很难
从MutationObserver()返回任何值

我想在这里
返回true
,但我似乎无法返回true

要确认,我的代码确实有效,并且在满足我的条件时运行
console.log(“显示假日按钮…”)
。但是我必须找到一种方法返回真的

//WAIT FOR BUTTON FUNCTION
function waitForElement(className, callBack){
    window.setTimeout(function(){
        var element = document.querySelector(className);
        if(element) {
            callBack(className, element);
        } else {
            waitForElement(className, callBack);
        }
    },1000)
};

let value = '';

// MUTATION OBSERVER
let observer = new MutationObserver(function(mutations) {
    for (let i = 0; i < mutations.length; i++) {
        if (mutations[i].oldValue === "button ng-hide") {
            console.log("Button displayed...");
            return true;

            // value = true;
            // return value;
        };
    };
});

// WAIT FOR 
waitForElement(`[search-model="pod"]`,function(){
    let target = document.querySelector('[search-model="pod"]"]');
    observer.observe(target, { attributes : true, attributeOldValue: true, subtree: true});
});
//等待按钮功能
函数waitForElement(类名,回调){
setTimeout(函数(){
var元素=document.querySelector(className);
if(元素){
回调(类名、元素);
}否则{
waitForElement(类名,回调);
}
},1000)
};
让值=“”;
//突变观察者
让观察者=新的突变观察者(功能(突变){
for(设i=0;i<0.length;i++){
if(突变[i].oldValue==“按钮隐藏”){
console.log(“显示的按钮…”);
返回true;
//值=真;
//返回值;
};
};
});
//等待
waitForElement(`[search model=“pod”]`,函数(){
让target=document.querySelector('[search model=“pod”]“]');
observer.observe(目标,{attributes:true,attributeldvalue:true,子树:true});
});
在MutationObserver中返回true/false的最佳方法是什么?任何指针都会很有帮助

我也尝试过承诺,但这似乎不起作用,因为我正在观看的按钮可能会在DOM中间歇性出现和重新出现。我认为这个承诺只有在第一次实现时才会实现?(不是所有时候?)

函数waitForElement(选择器){
返回新承诺(功能(解决、拒绝){
var元素=document.querySelector(选择器);
if(元素){
var观察者=新的突变观察者(功能(突变){
for(设i=0;i<0.length;i++){
if(突变[i].oldValue==“按钮隐藏”){
console.log(“显示假日按钮…”);
解决();
返回;
};
};
});
让target=document.querySelector('[search model=“pod”]');
observer.observe(目标,{childList:true,attributes:true,attributeldvalue:true,subtree:true});
};
});
};
waitForElement(`[search model=“pod”]`)。然后(函数(元素){
console.log(“添加元素”,元素);
返回true;
});

您不能从回调返回,而期望值由
MutationObserver
返回。您需要承诺。我注意到您要求的是子树,而不是子列表。这有帮助吗?@SergiuParaschiv-嘿,Sergiu,这真的很有帮助,谢谢。看起来我可以将突变观察者与承诺结合起来并返回这样的值?我会尝试用你给我的例子重新创建它。谢谢。嗨@SergiuParaschiv-我和promies有过接触,但是如果我想看一个按钮,它会出现和消失多次吗?我已经更新了上面的代码,但是承诺不是只有第一次才能解决吗?我基本上需要这样做每次按钮重新出现时都会触发true。。。
function waitForElement(selector) {
    return new Promise(function(resolve, reject) {
      var element = document.querySelector(selector);

        if(element) {
            var observer = new MutationObserver(function(mutations) {
                for (let i = 0; i < mutations.length; i++) {
                    if (mutations[i].oldValue === "button ng-hide") {
                        console.log("Holidays button displayed...");
                        resolve();
                        return;
                    };
                };
              });
              let target = document.querySelector('[search-model="pod"]');
              observer.observe(target, { childList: true, attributes : true, attributeOldValue: true, subtree: true});
        };

    });
  };
  waitForElement(`[search-model="pod"]`).then(function(element) {
    console.log("Element Added", element);
    return true;
});