Javascript JS承诺被忽略(不确定)

Javascript JS承诺被忽略(不确定),javascript,function,promise,Javascript,Function,Promise,我正在用javascript编写一个类似于警报的函数,我遇到了麻烦。 第一个函数(prepBkCrt)的代码如下所示: function prepBkCrt() { event.preventDefault(); crtBkMnl = true; crtBkCnl = false; const url = crtBkTab.querySelector("#url"); const name = crtBkTab.querySelecto

我正在用javascript编写一个类似于警报的函数,我遇到了麻烦。 第一个函数(prepBkCrt)的代码如下所示:

function prepBkCrt() {
    event.preventDefault();
    crtBkMnl = true;
    crtBkCnl = false;
    const url = crtBkTab.querySelector("#url");
    const name = crtBkTab.querySelector("#name");
    if (name.value.length >= 17) {
        poper("Bookmark","I will pass this part",true).then((response) => {
            if (response === false) {
                crtBkCnl = true;
                hideBkTab();
                return;
            }
        });
    }
    addBookmark(url.value,name.value);
    if (crtBkCnl === false) {
        poper("Bookmark","Bookmark successfully created!",false);
    }
    url.value = "";
    name.value = "";
}
function poper(headerTxt, descTxt, option) {
    return new Promise((resolve, reject) => {
        const poper = document.querySelector("#poper");
        const header = poper.querySelector("h2");
        const buttonDiv = poper.querySelector("div");
        const desc = poper.querySelector("span");
        header.innerText = headerTxt;
        desc.innerHTML = descTxt;

        const yBtn = buttonDiv.querySelectorAll("button")[0];
        yBtn.addEventListener("click", (event) => {poper.style.transform = "translateY(-300px)"; resolve(true);});
        
        const nBtn = buttonDiv.querySelectorAll("button")[1];
        nBtn.addEventListener("click", (event) => {poper.style.transform = "translateY(-300px)"; resolve(false);});

        if (option === false) {
            nBtn.style.display = "none";
        } else {
            nBtn.style.display = "block";
        }

        poper.style.transform = "none";
        setTimeout(() => {poper.style.transform = "translateY(-300px)"; resolve(false);},10000);
    });
}
第二个函数如下所示:

function prepBkCrt() {
    event.preventDefault();
    crtBkMnl = true;
    crtBkCnl = false;
    const url = crtBkTab.querySelector("#url");
    const name = crtBkTab.querySelector("#name");
    if (name.value.length >= 17) {
        poper("Bookmark","I will pass this part",true).then((response) => {
            if (response === false) {
                crtBkCnl = true;
                hideBkTab();
                return;
            }
        });
    }
    addBookmark(url.value,name.value);
    if (crtBkCnl === false) {
        poper("Bookmark","Bookmark successfully created!",false);
    }
    url.value = "";
    name.value = "";
}
function poper(headerTxt, descTxt, option) {
    return new Promise((resolve, reject) => {
        const poper = document.querySelector("#poper");
        const header = poper.querySelector("h2");
        const buttonDiv = poper.querySelector("div");
        const desc = poper.querySelector("span");
        header.innerText = headerTxt;
        desc.innerHTML = descTxt;

        const yBtn = buttonDiv.querySelectorAll("button")[0];
        yBtn.addEventListener("click", (event) => {poper.style.transform = "translateY(-300px)"; resolve(true);});
        
        const nBtn = buttonDiv.querySelectorAll("button")[1];
        nBtn.addEventListener("click", (event) => {poper.style.transform = "translateY(-300px)"; resolve(false);});

        if (option === false) {
            nBtn.style.display = "none";
        } else {
            nBtn.style.display = "block";
        }

        poper.style.transform = "none";
        setTimeout(() => {poper.style.transform = "translateY(-300px)"; resolve(false);},10000);
    });
}

这在其他代码上很好用,但在这个javascript文件上似乎不起作用。我已经检查了它是否运行了
prepBkCrt
函数中的第一个
poper
函数,这就是问题所在。预期的行为是,如果
name.value
的长度超过17,它应该运行
poper
函数(它应该像,并且运行,但是代码只运行第二个映像。有什么问题吗?

您似乎在寻找
else
语句。
中返回
。然后()
回调不会从
prepBkCrt
中断

function prepBkCrt() {
    event.preventDefault();
    crtBkMnl = true;
    crtBkCnl = false;
    const url = crtBkTab.querySelector("#url");
    const name = crtBkTab.querySelector("#name");
    if (name.value.length >= 17) {
        poper("Bookmark","I will pass this part",true).then(response => {
            if (response === false) {
                crtBkCnl = true;
                hideBkTab();
            }
        });
    } else {
        addBookmark(url.value,name.value);
        poper("Bookmark","Bookmark successfully created!",false);
        url.value = "";
        name.value = "";
    }
}

尝试为name.value.length检查添加一个else块。我无法理解问题:
poper()
没有运行?或者当它运行时,您没有获得预期的行为?或者尝试在另一个poper中的第一个poper下面添加代码。这是基于您的要求。“如果
name.value
的长度超过17,它应该运行
poper
函数”-哪一个?有两个对
poper
的调用,当前它同时运行两个。@Bergi第一个。