2 回答
![?](http://img1.sycdn.imooc.com/533e4c640001354402000200-100-100.jpg)
TA贡献1864条经验 获得超2个赞
该函数将清除所有间隔,但您也可以使用 filter() 以防您只想清除一些间隔:
const drivers = [];
await Promise.all(
this.state.tokens
.map((token, index) => {
const driver = setInterval(() => {
if (decodedPolylines[index].length > 1) {
api.sendLocation(
token,
decodedPolylines[index][0][0].toString(),
decodedPolylines[index][0][1].toString()
);
} else {
api.clockInOut(
token,
'out',
decodedPolylines[index][0][0].toString(),
decodedPolylines[index][0][1].toString()
);
clearInterval(driver);
}
}, 1000);
drivers.push(driver);
})
);
const clearDrivers = () => {
drivers.forEach(d => clearInterval(d));
};
// call clearDrivers() when you want to stop all intervals
![?](http://img1.sycdn.imooc.com/545850a00001fdd002200220-100-100.jpg)
TA贡献1780条经验 获得超4个赞
您需要先返回这些间隔才能清除所有这些间隔:
const intervals = this.state.tokens
.map((token, index) => setInterval(() => {
...
}, 1000))
);
intervals.forEach(interval => clearInterval(interval));
实际上,我Promise在您的代码中看不到任何内容,您确定需要使用await Promise.all(...)吗?
添加回答
举报