我有這樣的功能:進行下一步只有當功能已運行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