Закрыть функцию по имени вне функции - PullRequest
0 голосов
/ 19 апреля 2019

У меня работает несколько асинхронных функций, и мне интересно, можно ли закрыть функцию, которая работает в фоновом режиме. С его именем например?

async function test(){
 await ...
 await ...
 await ...
}
/* CODE TO CLOSE the test function, something like : aclose("test"); ??? */

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Я предполагаю, что под словом «закрыть» вы подразумеваете «отменить» асинхронный конвейер, запущенный функцией.Вы должны отслеживать отмену внутри асинхронной функции, используя что-то вроде шаблона Cancellation Token .Хотя JavaScript не имеет конструкции для этой встроенной функции, вы можете использовать такой пакет, как cancellationtoken .

. Вы можете вызывать функцию cancel токена из любой точки и регулярно проверять внутриасинхронная функция, чтобы увидеть, была ли она отменена.Если это так, вы можете просто вернуться.Если нет, вы продолжаете свою работу.

0 голосов
/ 19 апреля 2019

Нет, потому что в этом нет необходимости. Асинхронная функция, определенная в JavaScript, не работает в фоновом режиме; он работает одновременно , но не параллельно. Всякий раз, когда код JS фактически выполняется, он находится на переднем плане.

Если вы хотите, чтобы другой код мог остановить завершение функции, вам нужно написать свою асинхронную функцию для взаимодействия. Например, вы можете установить общую переменную замыкания, которую может установить внешний код, а затем попросить асинхронную функцию проверять эту переменную после каждого оператора await, чтобы определить, должен ли он возвращаться раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...