В нашей структуре мы должны ждать и опрашивать, пока не будет получен конкретный ответ, чтобы выполнить следующий вызов API. Для этого у нас есть следующая функция,
public async pollUntil(request: () => Promise<any>,condition: (res: any) => boolean) {
const responseData = await request();
const conditionResponse = condition(responseData);
if (!conditionResponse) {
await setTimeout(5000);
await this.pollUntil(request, condition);
} else {
this.response = responseData;
}
}
Использование
await ApiCall.pollUntil(() => ApiCall.get(url),this.statusAbortComplete);
Нам нужно опросить, пока ответ не будет следующим
private statusAbortComplete(response: any) {
return !!(response.state === 'abortDone' && response.msg === 'empty');
}
Чтобы выполнить эту задачу, требуется около 10 минут, а иногда и менее 10 минут. С текущей реализацией мы должны изменить глобальный тайм-аут огурца для setps для огромного количества
// <number> timeout for step definitions
timeout: 900000,
Этот тайм-аут влияет на другие функции, которые не работают. Поэтому необходимо добавить тайм-аут в функцию pollUntil(), чтобы остановить цикл после достижения тайм-аута. Есть и другие похожие типы вызовов API, которые нам нужно сделать. И это занимает разное время, чтобы получить окончательный ответ. Нам может понадобиться передать другой тайм-аут для вызовов функции pollUntil(). Я новичок в машинописных текстах, и мне нужна помощь, чтобы понять, как это сделать.
Если вы хотите обновить эту существующую функцию pollUntil(), обратитесь к этому Опросу, пока не получите конкретный результат?
Вместо обновления существующей функции вы можете обновить время ожидания шага.
Например
Given(/^this is my step$/, {timeout: 60 * 1000}, function() {
// Does some actions
});
Спасибо, обновление времени ожидания шагов работает