Есть ли способ в Node.js убить операцию async и не допустить ее завершения (вызов callbacks или разрешение обещания)?Node.js, убивающий асинхронный вызов
Чтобы быть более конкретным, допустим, я сделал звонок http.get()
. Это асинхронная операция, которая в конечном итоге вызовет обратный вызов или вызовет событие ошибки. Но это занимает слишком много времени, и логика в моем коде может сказать «эй, я так долго ждала, я не хочу больше ждать!» и делать что-то другое. Проблема в том, что вызов будет вызван, и это может испортить материал! Итак, да, есть ли способ остановить этот обратный вызов от исполнения? Моя идея была:
var notWaitingAnyMore = false;
http.get({}, function(res) {
if(notWaitingAnyMore) { // do stuff! }
});
//do some other stuff
//now fed up with waiting:
notWaitingAnyMore = true;
Но это не кажется, как хорошее решение для меня ...
Сделать это использование обещаниями. Затем засуньте промежуточное обещание, которое также завершится, когда notWaitingAnyMore станет истинным и выбрасывает результат http. – usr
Это то, что вы ищете http://stackoverflow.com/a/8377810/57095? –
Вы хотите установить [тайм-аут на вызов 'http'] (http://stackoverflow.com/questions/6214902/how-to-set-a-timeout-on-a-http-request-in-node)? Стоит отметить, что многие библиотеки JavaScript Promise поддерживают собственные тайм-ауты, которые автоматически обрабатывают это для вас. – tadman