javascript - JS Promise 被忽略(不确定)
问题描述
我正在用 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);
});
}
这曾经在其他代码上运行良好,但似乎不适用于这个 javascript 文件。我已经检查过它确实运行了poper
函数中的第一个函数prepBkCrt
,这就是问题所在。预期的行为是,如果name.value
的长度超过 17,它应该运行poper
函数(它应该像 这样工作,并运行这个,但代码只运行第二个图像。有什么问题?
解决方案
你似乎在寻找一个else
声明。回调内部不会中断return
..then()
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 = "";
}
}
推荐阅读
- selenium - jMeter - 硒集成
- javascript - JavaScript 恶意软件扫描在 flatmap-stream v0.1.1 上检测到比特币挖掘
- html - 无法使用 display:inline 与 SVG
- php - 查询从两个不同的表中获取数据
- r - 为什么我在使用替换功能时收到此消息?在 mean.default(x, na.rm = TRUE) 中:参数不是数字或逻辑:返回 NA
- c# - 如何检测用户是否在桌面上 C# winforms
- django - 您有 1 个未应用的迁移
- vue.js - Vuejs-路由回上一个组件后停止清除数据属性
- python - Python:从 Chatbot 的另一个函数的结果调用函数
- java - 使用预建凭证上传到 Amazon S3