Javascript 无法在';window.alert';成角的
我正在尝试计算时差,如果时差大于20分钟,我希望显示一条Javascript 无法在';window.alert';成角的,javascript,angular,typescript,async-await,alert,Javascript,Angular,Typescript,Async Await,Alert,我正在尝试计算时差,如果时差大于20分钟,我希望显示一条警报消息,然后退出。 我不想遍历所有的行,而是想在找到第一台拥有分钟数{ 返回行==“2”; }); (异步()=>{ for(设i=0;i{const host='abc';const prevData=_this.myService.getData(host);const timeDiff=Math.abs(new Date().getTime()-new Date(prevData[0].dateAt).getTime());cons
警报消息
,然后退出。
我不想遍历所有的行
,而是想在找到第一台拥有分钟数<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;
}
});
在上面的代码中,
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;
}
}
})();
let rows=[1,2,3];
设f=(异步行=>{
返回行==“2”;
});
(异步()=>{
for(设i=0;i
有两个问题。首先,您使用的是forEach,因此将对每个元素执行匿名函数。您也在使用异步,所以控制永远不会屈服。您需要手动迭代自己循环中的每一行,并且需要等待函数返回并捕获结果。您能否提供一些关于如何迭代然后等待函数返回的帮助?如果你能提供一个最新的答案,这将是非常有帮助的,我会尝试提供一个答案。我已经更新了我的问题,并尝试使用你给出的答案。在上面的代码中,this.myService.getData(host)
返回null我不确定,可能是“this”引用的作用域不正确(但我认为ES8会在内部将上下文提升为胖箭头函数块。尝试捕获一个“this”声明函数f之前的引用:let_this=this;
const f=(异步行=>{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);返回分钟数;});
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;
}
}
})();