javascript - 在 Angular9 中的“window.alert”之后无法退出该功能
问题描述
我正在尝试计算时差,如果时差大于 20 分钟,我想显示一个alert message
然后退出。我不打算遍历所有的rows
并想在找出第一个主机后退出该功能minutes < 20
。
this.dataSource.filteredData.forEach(
async row => {
this.selection.select(row);
// const host = row.hostName.substring(0, row.hostName.indexOf('.'));
const host = 'abc';
const prevData = await this.myService.getData(host);
const timeDiff = Math.abs(new Date().getTime() - new Date(prevData[0].dateAt).getTime());
const minutes = Math.floor((timeDiff / 1000) / 60);
if (minutes < 20) {
window.alert('Please check after ' + (20 - minutes) + ' minutes.');
return false;
}
});
我正在尝试使用退出函数,return false
但它仍在循环所有行。
更新的代码没有foreach
:
const f = (async row => {
const host = 'abc';
const prevData = this.myService.getData(host);
const timeDiff = Math.abs(new Date().getTime() - new Date(prevData[0].dateAt).getTime());
const minutes = Math.floor((timeDiff / 1000) / 60);
return minutes;
});
(async () => {
for (let i = 0; i < this.dataSource.filteredData.length; i++) {
const mins = await f(this.dataSource.filteredData[i]);
if (mins < 200) {
window.alert('Please retry after ' + (200 - mins) + ' minutes.');
break;
}
}
})();
在上面的代码中,this.myService.getData(host)
正在返回null
解决方案
这是控件应如何编程的最小可行表示:
let rows = [1, 2, 3];
let f = (async row => {
return row === "2";
});
(async () => {
for (let i = 0; i < rows.length; i++) {
let result = await f(rows[i]);
console.log(result);
if (!result) {
break;
}
}
})();
推荐阅读
- kotlin - 为什么 Intellij 不为新的 kotlin 项目创建 build.gradle.kts?
- ecmascript-6 - 为什么我可以在导出模块中声明之前访问 const
- swift - 在 SwiftUI NaviagationLink 中创建 ManagedObject
- java - 在 Springboot 中有条件地应用 @EnableJms
- css - 给类以角度动态创建的按钮
- python - ModuleNotFoundError:没有名为“osmnx”的模块
- python - 使用熊猫插值将每月值转换为每日值
- regex - 如何删除“$”和“.” 用正则表达式
- vue.js - vue-cli 应用程序没有查看文件更改?
- python - Scrapy 安装错误,“ModuleNotFoundError”