我有这样的功能:进行下一步只有当功能已运行10次
function setIntervalX(callback, delay, repetitions): Promise<any> {
let promises = [];
var x = 0;
var intervalID = window.setInterval(function() {
callback();
if (++x === repetitions) {
window.clearInterval(intervalID);
promises.push(new Promise((resolve, reject) => {});
}
}, delay);
return Promise.all(promises);
}
我的目标是去调用测试功能和那些10个呼叫已经结束后,我想打电话给期待在我的功能。因此,这意味着我必须等待它结束了,像这样:
setIntervalX(() => {
//logic here
}, 1000, 10).then(() => {
expect(something).toBe(anotherThing);
});
我觉得我这样做的方式是丑陋的,而且可以做到bettery。有什么建议么?
好的,我重新格式化了,你现在能帮忙吗:)? –
尊重,但看看上面。你真的会称之为“一贯且可读”的格式吗? 'callback'在第一个代码块中没有对齐,这是误导性的;第一个区块在其他方面仍然具有不一致的缩进;而关于第二代码块的说法越少越好。明确你的帖子和代码,并证明你花时间这样做,提高了获得良好答案的机会。 –
如果这是一项测试,为什么您将它们隔开1秒的时间间隔,而不是将它们背靠背运行?从你的问题来看,“回调函数”是否可以返回一个承诺,也就是说,有效地表示一个异步操作,执行是否需要一秒以内(意味着测试依次执行)或更多(它们最终同时执行即并行)。澄清这可能会使问题变得更好。 – jib