Я использую стороннюю библиотеку для тяжелых вычислений. Проблема в том, что он зависает для некоторого ввода. Я хотел бы добавить тайм-аут для синхронной операции. Мой код работает в среде однопоточного узла на GCP (Cloud Fuctions).
const result calculate(x, y);
Это то, что я уже пробовал:
let calculation = new Promise((resolve, reject) => {
const result = calculate(x, y)
resolve(result)
})
let timeout = new Promise((resolve, reject) => {
let id = setTimeout(() => {
clearTimeout(id);
reject()
}, 5000)
})
const result = await Promise.race([timeout, calculation])
К сожалению, это не работает, так как метод calculate
блокирует поток, поэтому время ожидания не может отклонить обещание. Можно ли сделать синхронный метод тайм-аут после определенного времени?