javascript - document.querySelectorAll.forEach 奇怪的行为
问题描述
我有一小段代码可以手动获取选中复选框的值并通过套接字 io 发出。问题是,如果我注释掉payload.permission.subscriptionPlans.push(item.value);
它可以正常工作,但如果我取消注释它,socket.emit 仍然运行,我仍然可以获得服务器端所需的所有数据,没有任何错误,但它不运行回调函数。这是代码:
let payload = {
permission: {},
};
payload.permission.subscriptionPlans = [];
document.querySelectorAll(".form-add-sub-plan:checked").forEach((item) => {
console.log(item.value); // this still works
payload.permission.subscriptionPlans.push(item.value); // problem here
});
socket.emit("admin/manage-permission/create", payload, (res) => {
let addModal = bootstrap.Modal.getOrCreateInstance(document.getElementById("add-permission-modal"));
addModal.hide();
table.reload();
table.displayMessage(res.payload.type, res.payload.message);
});
// server code
socket.on("admin/manage-permission/create", async(req, done) => {
try {
if (await Permission.exists({
url: req.permission.url
})) {
return done(
new SocketPayload("error", 409, {
type: "danger",
message: "Url already exists",
})
);
}
let newPermission = new Permission(req.permission);
// console.log(newPermission);
await newPermission.save();
return done(
new SocketPayload("success", 200, {
type: "success",
message: "New permission was added",
})
);
} catch (e) {
console.log(e);
return done(
new SocketPayload("error", 500, {
type: "danger",
message: "An error occured",
})
);
}
});
任何想法为什么会发生这种情况?编辑:如果有人想知道,添加服务器代码
解决方案
原来是猫鼬中间件停止套接字返回回调。我花了一段时间才弄明白,因为服务器没有抛出任何错误。
推荐阅读
- python - 在特定点重复 python 脚本
- php - 注意:尝试在第 83 行访问 bool 类型值的数组偏移量
- javascript - PHP 调用 Javscript 函数时出现“未捕获的 ReferenceError:未定义 gotoLogIn”
- mysql - MySQL 在至少 X 个项目上加入数据集
- c# - ASP.NET Entity Framework 加载嵌套的相关数据
- c++ - 如何检查字符串向量中字符的所有邻居
- amazon-web-services - EC2 Ubuntu 上的 SSH 连接超时
- swift - 注释不显示
- sql - 如何返回过去 90 天内没有活动日期的记录?
- rust - 整数类型的 Rust 特征边界