ОБНОВЛЕНИЕ : Исходное решение использовало 2147483647 в качестве значения тайм-аута, теперь оно было реорганизовано для использования Number.MAX_SAFE_INTEGER, как предложено в комментариях.
Я провел еще несколько тестов и понял, что оновсегда прекращайте работать после того, как я использую pm.sendRequest.Если я попытаюсь выполнить Обещание, оно будет работать.
Кажется известной ошибкой, глядя на эту тему .
Обходной путь для этого - оставить открытым тайм-аут при обработке кода.Просто убедитесь, что все возможные пути очищают тайм-аут, или вызов будет зависать на 300000 лет ?
// This timeout ensure that postman will not close the connection before completing async tasks.
// - it must be cleared once all tasks are completed or it will hang
const interval = setTimeout(() => {}, Number.MAX_SAFE_INTEGER);
let promiseNumber = 0;
function resolvedPromise() {
return new Promise((resolve, reject) => {
pm.sendRequest('https://postman-echo.com/get', (err, res) => {
if (err) {
console.log(err);
reject();
} else {
console.log(`Resolved promise ${++promiseNumber}`);
resolve();
}
});
});
}
resolvedPromise()
.then(resolvedPromise)
.then(resolvedPromise)
.then(() => clearTimeout(interval))
.catch(err => {
console.log(err);
clearTimeout(interval);
});
Теперь он печатает ожидаемый результат:
Resolved promise 1
Resolved promise 2
Resolved promise 3